Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JSON.NET与XML';s XPath、SelectNodes、SelectSingleNode?_C#_Json.net - Fatal编程技术网

C# JSON.NET与XML';s XPath、SelectNodes、SelectSingleNode?

C# JSON.NET与XML';s XPath、SelectNodes、SelectSingleNode?,c#,json.net,C#,Json.net,目前,我的代码结构使用XmlDocument加载Xml数据,然后SelectNodes遍历重复项列表 对于每个元素,我都使用XmlNode.SelectSingleNode来挑选字段元素 现在,我想使用JSON.NET来实现与作为JSON交付给我的文档相同的结果。答案可以是JSON.net以外的东西,只要它是C#可积的。您有可以映射JSON的对象层次结构吗?您可以创建一个对象树(即反序列化JSON),并使用LINQ的Where,SelectMany,等等。有SelectToken。它使用类似于D

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

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


现在,我想使用JSON.NET来实现与作为JSON交付给我的文档相同的结果。答案可以是JSON.net以外的东西,只要它是C#可积的。

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

有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<string> names = (string)o.SelectToken("People[0].Roles").Select(t => (string)t).ToList();
JObject o=JObject.Parse(“{'People':[{'Name':'Jeff','Roles':['Manager','Admin']}]);
//获取第一人称的角色数组标记并转换为字符串列表
IList names=(string)o.SelectToken(“人员[0].Roles”).Select(t=>(string)t.ToList();

文档:

感谢您的回复。具体来说,我使用的是twitter.com/status/indications.json提要。我希望将每个“状态”传递给HTML呈现,而不知道(在构建时)它正在使用哪些字段,并允许它使用Json版本的SelectSingleNode提取字段。LINQ的例子会很有帮助:)啊,对。它不允许您使用任意字符串,如果这是您的意思的话。每个场景都需要编码。很好!有没有一种不区分大小写的方法可以做到这一点?比如
JToken.GetValue(“某物”,StringComparison.OrdinalIgnoreCase)