当 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>());
我在 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>());