首先放出来需要读取的jsoin文件内容,这次我们主要来说如何读取plist和hlist,前面的读取方法可以参照之前的文章,链接如下
.net Core 配置文件热加载
.Net Core读json文件
代码语言:javascript复制{
"loginName": "sysAdmin",
"loginDB": {
"server": "192.168.10.1",
"uid": "sa",
"pwd": "123456"
},
"JAVA_HOME": "123",
"plist": [ 11, 12, 13, 14, 15 ],
"hlist": [
{
"server1name": "abc",
"server2port": "192.168.20.11"
},
{
"server1name": "bbc",
"server2port": "192.1678.11.15"
}
]
}
这里我将介绍四种方法读取plist与hlist
使用:运算符读取
我在configuration处打了断点,观察读取到的数据值
我们可以看到plist和hlist的保存形式,我们下面直接使用key值读取
代码语言:javascript复制IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Environment.CurrentDirectory)
.AddJsonFile($"appsettings.json", optional: true, reloadOnChange: true)
.Build();
var data1 = configuration["plist:3"];
var data2 = configuration["hlist:0:server1name"];
使用GetSection读取
这个方法就是每次读取当前节点的子节点,比较简单看看代码即可
代码语言:javascript复制IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Environment.CurrentDirectory)
.AddJsonFile($"appsettings.json", optional: true, reloadOnChange: true)
.Build();
var data1 = configuration.GetSection("plist").GetSection("3").Value;
var data2 = configuration.GetSection("hlist").GetSection("0").GetSection("server1name").Value;
使用GetValue得到指定类型的数据
在使用这个方法之前需要添加Microsoft.Extensions.Configuration.Binder
引用
这个方法的作用是可以直接获得想要的类型的数据
代码语言:javascript复制configuration.GetValue("plist:10", -1);
这段代码后的-1表示,如果未读取到“plist:10”,则默认为-1
代码语言:javascript复制IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Environment.CurrentDirectory)
.AddJsonFile($"appsettings.json", optional: true, reloadOnChange: true)
.Build();
var data1 = configuration.GetValue<int>("plist:3");
var data2 = configuration.GetValue("plist:10", -1);
使用Get、Bind:“强类型方式”
这里我们需要做一个这样的操作。
复制json文件,粘贴的时候,选择 编辑-> 选择性粘贴->将json粘贴为实体类,这样可以自动生成实体类
这里附上我粘贴生成的类
代码语言:javascript复制 public class Rootobject
{
public string loginName { get; set; }
public Logindb loginDB { get; set; }
public string JAVA_HOME { get; set; }
public int[] plist { get; set; }
public Hlist[] hlist { get; set; }
}
public class Logindb
{
public string server { get; set; }
public string uid { get; set; }
public string pwd { get; set; }
}
public class Hlist
{
public string server1name { get; set; }
public string server2port { get; set; }
}
代码语言:javascript复制IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Environment.CurrentDirectory)
.AddJsonFile($"appsettings.json", optional: true, reloadOnChange: true)
.Build();
Rootobject rootobject = new Rootobject();
configuration.Bind(rootobject);
var data1 = rootobject.hlist[0].server1name;
var data2 = rootobject.loginDB.pwd;
Console.WriteLine(data1);
Console.WriteLine(data2);
代码语言:javascript复制 var rootobject1 = configuration.Get<Rootobject>();
var data3 = rootobject1.hlist[0].server1name;
var data4 = rootobject1.loginDB.pwd;
Console.WriteLine(data3);
Console.WriteLine(data4);
这里也是有两种读取方式,第一种是实例化一个对象将对象与配置文件进行绑定,第二种方法是直接将配置文件转换成需要的对象。