.net core读取json文件中的数组和复杂数据

首先放出来需要读取的jsoin文件内容,这次我们主要来说如何读取plist和hlist,前面的读取方法可以参照之前的文章,链接如下
.net Core 配置文件热加载
.Net Core读json文件

{
  "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值读取

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读取

这个方法就是每次读取当前节点的子节点,比较简单看看代码即可

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引用
这个方法的作用是可以直接获得想要的类型的数据

configuration.GetValue("plist:10", -1);

这段代码后的-1表示,如果未读取到“plist:10”,则默认为-1

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粘贴为实体类,这样可以自动生成实体类
这里附上我粘贴生成的类

		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; }
        }
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);
            var rootobject1 = configuration.Get<Rootobject>();
            var data3 = rootobject1.hlist[0].server1name;
            var data4 = rootobject1.loginDB.pwd;
            Console.WriteLine(data3);
            Console.WriteLine(data4);

这里也是有两种读取方式,第一种是实例化一个对象将对象与配置文件进行绑定,第二种方法是直接将配置文件转换成需要的对象。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maybe_ch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值