当 JSON 个节点在每个级别不同时,从 asp.net 核心中的应用变量中读取 JSON 值

Read JSON values from appvariables in asp.net core when JSON nodes are different at each level

我在 appvariables.json 文件中提供了下面的示例 JSON。

{   "**Desc1**":
    {
        "Code": "Cd1",
        "Description": "Desc1"
      }
      "**Desc2**":
      {
       "Code": "Cd2",
        "Description": "Desc2"
      }
}

如果这是具有相同节点名称(突出显示的 Desc1、Desc2)的 JSON,那么创建一个 class 并且阅读这篇文章对我来说会更容易。

能否请您就如何处理提出建议。

由于这需要动态处理方式,我无法创建 class。

我想阅读来自 appvariables 的 JSON。有没有办法实现这一点?或者请建议更好的处理方式。

如果您只想从 appvariables.json 文件中读取变量并将该值与以下 class 绑定:

public class Desc
{
    public string Code {get;set;}
    public string Description {get;set;}
}

只需使用 ConfigurationBuilder() :

var config= new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appvariables.json", optional: false, reloadOnChange: true)
    .Build();
var v1=config.GetSection("Desc1").Get<Desc>();
var v2=config.GetSection("Desc2").Get<Desc>();

编辑

要检索多个 Desc ,您可以使用 GetChildren():

var v= config.GetChildren()
    .Select(i=>i.Get<Desc>());

foreach(var i in v){
    Console.WriteLine($"Got a variable : {i.Code}---{i.Description}");
}

编辑2

您还可以根据需要添加Where条件来过滤配置:

var v= config.GetChildren()
    .Where(i=>i.Key.StartsWith("Type"))
    .Select(i=>i.Get<Desc>());