怎么在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"]);
}