C# 使用Newtonsoft.Json来读取JOSN数组

怎么在C#工程中安装Newtonsoft在这里就不提了,随便搜一下就有教程反正也是用NuGet包管理器安装。这里记录一下怎么读取JSON节点。

假如有如下JSON:

{

"春哥": "纯爷们",

"data": {

"chun": 567890,

"list": [

{

"id": "12345",

"age": 5,

"Job_number": 9049

}

]

}

}

刚开始学用这个Newtonsoft的时候别人的博客给出的演示例子是先声明一个类,然后实例化这个类,用访问类的数据成员的方式来访问JSON节点,这就比较麻烦了,Newtonsoft其实提供了直接把一整个JSON数据打包成一个JObject对象的方法,然后就可以像用类似数组的方式来访问这些节点。

首先导入支持库:

cs 复制代码
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
cs 复制代码
string content="{\"春哥\": \"纯爷们\",\"data\": {\"chun\": 567890,\"list\": [{\"id\": \"12345\",\"age\": 5,\"Job_number\": 9049}]}}"
JObject json = JObject.Parse(content);

//读取春哥节点
string enumGroupName = json["春哥"].ToString();
Console.WriteLine($"春哥:{enumGroupName}");

那么要怎么访问list这个数组呢?这个数组是JSON里比较常见的套娃数据,例:

cs 复制代码
string content="{\"春哥\": \"纯爷们\",\"data\": {\"chun\": 567890,\"list\": [{\"id\": \"12345\",\"age\": 5,\"Job_number\": 9049}]}}"
JObject json = JObject.Parse(content);

//虽然这个list数组里只有一个元素那也得写上索引
string enumGroupName = json["data"]["list"][0]["id"].ToString();
Console.WriteLine($"春哥:{enumGroupName}");

{

"春哥": "纯爷们",

"data": {

"chun": 567890,

"list": [

{

"id": "12343",

"age": 3,

"Job_number": 7039

},

{

"id": "12347",

"age": 4,

"Job_number": 8029

},

{

"id": "12340",

"age": 5,

"Job_number": 9089

}

]

}

}

如何遍历数组:

cs 复制代码
foreach (var item in json["data"]["list"])
{
    //遍历每一个{ }里的id节点
    Console.WriteLine(item["id"]);

}
相关推荐
ZC跨境爬虫9 小时前
跟着 MDN 学JavaScript day_9:字符串方法实战挑战与解题思路
开发语言·前端·javascript
青春:一叶知秋10 小时前
【C++】protobuf序列化与反序列化
开发语言·c++
一拳小和尚LXY10 小时前
我开发了一款免费 Chrome 插件 TabScribe:一键复制所有标签页为 Markdown/JSON,完全离线零追踪
前端·chrome·json
夕除11 小时前
shizhan--10
java·开发语言
Zhang~Ling11 小时前
C++ 红黑树封装:myset和mymap的底层实现
开发语言·数据结构·c++·算法
原来是猿11 小时前
为什么 C++ 需要区分左值和右值?
开发语言·c++
xier_ran11 小时前
【infra之路】PagedAttention
java·开发语言
SilentSamsara11 小时前
NumPy 进阶:广播机制、ufunc 与向量化计算的工程实践
开发语言·python·青少年编程·性能优化·numpy
珊瑚里的鱼11 小时前
C++的强制类型转换
android·开发语言·c++
编程探索者小陈11 小时前
接口自动化三件套:JSON Schema 校验 + logging 日志 + Allure 测试报告
开发语言·python