什么是JSON.NET相当于XML的XPath,SelectNodes,SelectSingleNode?

目前,我的代码结构使用XmlDocument加载Xml数据,然后使用SelectNodes迭代重复项列表。

对于每个元素,我使用XmlNode.SelectSingleNode来挑选字段元素。

我现在想要使用JSON.NET来实现与作为JSON提供给我的文档相同的结果。 答案可能不是JSON.net,只要它是C#可积。

Json.NET有SelectToken。 它使用类似于DataBinder.Eval的语法通过字符串表达式获取JSON:

 JObject o = JObject.Parse("{'People':[{'Name':'Jeff'},{'Name':'Joe'}]}"); // get name token of first person and convert to a string string name = (string)o.SelectToken("People[0].Name"); 

或者,如果要选择多个值:

 JObject o = JObject.Parse("{'People':[{'Name':'Jeff','Roles':['Manager', 'Admin']}]}"); // get role array token of first person and convert to a list of strings IList names = (string)o.SelectToken("People[0].Roles").Select(t => (string)t).ToList(); 

文档: 使用SelectToken查询JSON

您是否有可以映射JSON的对象层次结构? 您可以创建一个对象树(即反序列化JSON),并使用LINQ的WhereSelectMany等。