C# json使用之Json.NET(4)——LINQ to JSON

2018年8月3日 0 条评论 1.45k 次阅读 1 人点赞

LINQ to JSON是一个用于处理JSON对象的API。 它的设计考虑了LINQ,以便快速查询和创建JSON对象。 LINQ to JSON位于Newtonsoft.Json.Linq命名空间下。

示例:

解析JSON

LINQ to JSON具有可用于从字符串解析JSON或直接从文件加载JSON的方法。

Parsing JSON text 解析JSON文本

可以使用Parse(String)从字符串中读取JSON值。

Loading JSON from a file 从文件加载JSON

也可以使用ReadFrom(JsonReader)直接从文件加载JSON。

创建JSON

除了从现有JSON字符串解析JSON之外,还可以从头创建LINQ to JSON对象以创建新的JSON结构。

手动创建json

一次设置一个值并创建一个对象和数组可以完全控制,但它比其他选项更冗长。

使用LINQ创建JSON

使用LINQ声明性地创建JSON对象是从值集合创建JSON的快速方法。

从对象创建JSON

最后一个选项是使用FromObject()方法从非JSON类型创建JSON对象。 在内部,FromObject将使用JsonSerializer将对象序列化为LINQ to JSON对象而不是文本。

下面的示例显示了从匿名对象创建JSON对象,但任何.NET类型都可以与FromObject一起使用来创建JSON。

使用LINQ查询JSON

LINQ to JSON提供了许多从其对象获取数据的方法。 JObject / JArray上的索引方法允许您通过其属性名称快速获取数据集合中的对象或索引,而Children()允许您获取数据范围作为IEnumerable <JToken>然后使用LINQ进行查询。

Getting values by Property Name or Collection Index

从LINQ到JSON获取值的最简单方法是使用JObject / JArray上的Item [Object]索引,然后将返回的JValue转换为所需的类型。

用LINQ查询

也可以使用LINQ查询JObject / JArray。 Children()将JObject / JArray的子元素值作为IEnumerable <JToken>返回,然后可以使用标准的Where / OrderBy / Select LINQ运算符进行查询。

Children()返回令牌的所有子节点。 如果它是一个JObject,它将返回一个要使用的属性集合,如果它是一个JArray,您将获得该数组值的集合。

LINQ to JSON也可用于手动将JSON转换为.NET对象。

当您使用与您的.NET对象不匹配的JSON时,在.NET对象之间手动序列化和反序列化非常有用。

使用SelectToken查询JSON

SelectToken()提供了一种方法,使用指向所需JToken的单个字符串路径来查询LINQ to JSON。 SelectToken使动态查询变得容易,因为整个查询是在字符串中定义的。

SelectToken

SelectToken是JToken上的一个方法,它采用字符串路径到子令牌。 如果在路径的位置找不到令牌,则SelectToken将返回子令牌或空引用。

该路径由以句点分隔的属性名称和数组索引组成,例如:Manufacturers[0].Name

SelectToken with JSONPath

SelectToken支持JSONPath查询。 在此处了解有关JSONPath的更多信息

SelectToken with LINQ

SelectToken可与标准LINQ方法结合使用。

文章来源:源代码,欢迎分享,转载请保留出处。

原文地址:https://www.vcblog.top/article/452/

技术重在于积累,不要灰心,希望在明天!

文章评论(0)