相关文章推荐
坚韧的椅子  ·  ERROR: Could not ...·  1 年前    · 
瘦瘦的马克杯  ·  如何使用Android ...·  1 年前    · 

JToken的层次结构是这样的:

JToken         -抽象基类
JContainer     - 能够包含其它JToken的JToken抽象基类
JArray     - 表示一个JSON数组(包含一个有序的List)
JObeject    - 表示一个JSON对象(包含一个IEnumerable)
JProperty   - 表示一个JSON属性(在JObject中是一个name/JToken键值对)
JValue       - 表示一个原生JSON值(string,number,boolean,null)

以下是几条基本的经验法则:

如果是一个对象(在JSON里是有大括号“{”和“}”来标识的),就用JObject。
如果是一个数组或集合(用中括号“[”和“]”标识的),就用JArray。
如果是原生值,就用JValue。
如果你不知道你的json是什么类型的token,或者你希望用一种通用的方式来处理上面任意一种类型的对象,就用JToken,然后你可以检查它的Type属性来决定是哪种类型的token,并把它转化成相应的类型。
文章地址: https://www.cnblogs.com/Lau7/p/8036872.html

在原来解析json数据是,一般都是用反序列化来实现json数据的解读,这需要首先知道json数据的结构并且建立相应的类才能反序列化,一旦遇到动态的json数据,这种方法就不使用。 为了解决动态解析json数据,微软有个Newtonsoft.Json封装类十分好用,里面的J Token 直接实现ling查询。