首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >.net core读取json文件中的数组和复杂数据

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

作者头像
MaybeHC
发布2024-04-23 19:32:03
发布2024-04-23 19:32:03
1.5K00
代码可运行
举报
文章被收录于专栏:技术之路技术之路
运行总次数:0
代码可运行

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

.net Core 配置文件热加载

.Net Core读json文件

代码语言:javascript
代码运行次数:0
运行
复制
{
  "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
代码运行次数:0
运行
复制
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
代码运行次数:0
运行
复制
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
代码运行次数:0
运行
复制
configuration.GetValue("plist:10", -1);

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

代码语言:javascript
代码运行次数:0
运行
复制
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
代码运行次数:0
运行
复制
		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
代码运行次数:0
运行
复制
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
代码运行次数:0
运行
复制
            var rootobject1 = configuration.Get<Rootobject>();
            var data3 = rootobject1.hlist[0].server1name;
            var data4 = rootobject1.loginDB.pwd;
            Console.WriteLine(data3);
            Console.WriteLine(data4);

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用:运算符读取
  • 使用GetSection读取
  • 使用GetValue得到指定类型的数据
  • 使用Get、Bind:“强类型方式”
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档