static void Main(string[] args)
var json = "[{\"这是info1.key1\":\"这是info1.value1\",\"这是info1.key2\":\"这是info1.value2\"},{\"这是info2.key1\":\"这是info2.value1\",\"这是info2.key2\":\"这是info2.value2\"}]";
var list = JsonConvert.DeserializeObject(json) as JArray;
var listdata = new List
();
foreach (var item in list)
switch (item.Type)
case JTokenType.Object:
ChildrenTokens(item, listdata);
break;
case JTokenType.Property:
listdata.Add(item);
break;
default:
throw new Exception($"暂未适配该类型");
//遍历JProperty
foreach (var item in listdata)
var jProperty = item.ToObject();
string name = jProperty.Name;
JToken value = jProperty.Value;
Console.Read();
private static void ChildrenTokens(JToken jObject, List jTokens)
if (jTokens == null) throw new Exception("接收对象不能为空");
var childrens = jObject.Children();
foreach (var item in childrens)
switch (item.Type)
case JTokenType.Object:
ChildrenTokens(item, jTokens);
break;
case JTokenType.Property:
jTokens.Add(item);
break;
default:
throw new Exception($"暂未适配该类型");
using Newtonsoft.Json;using Newtonsoft.Json.Linq;using System;using System.Collections.Generic;namespace UnitTest{ class Program { static void Main(string[] args) { var json = "[{\"这是info1.key1\":\"这是info1.value1\"...
在原来解析json数据是,一般都是用反序列化来实现json数据的解读,这需要首先知道json数据的结构并且建立相应的类才能反序列化,一旦遇到动态的json数据,这种方法就不使用。
为了解决动态解析json数据,微软有个Newtonsoft.Json封装类十分好用,里面的
JToken
直接实现ling查询。
Newtonsoft.Json是一个用于.NET平台的JSON框架。它是最流行的JSON框架之一,提供了从JSON字符串到.NET对象的序列化和反序列化。
JObject
是Newtonsoft.Json中的一个类,代表一个JSON对象。它使用键值对的形式存储JSON属性,其中键是字符串,值可以是任何类型,包括另一个
JObject
,JArray,字符串,数字,布尔等等。
使用
JObject
可以轻松地将JSON字符串转换为.NET对象,或者将.NET对象序列化为JSON字符串。例如,我们可以使用
JObject
.Parse方法将一个JSON字符串解析为一个
JObject
对象,然后可以使用索引符号访问其中的属性。同时,我们也可以使用
JObject
.FromObject方法将一个.NET对象转换为
JObject
对象,然后可以使用toString()函数将其转换为JSON字符串格式。
总之,Newtonsoft.Json和
JObject
是.NET平台中非常有用的JSON序列化和反序列化工具,它们可以方便地将JSON数据转换为.NET对象,反之亦然。当我们需要使用JSON数据来与其他平台通信时,这一工具可以让我们更高效地完成数据传输,并且保证数据的完整性。