30

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

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

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

4

2 回答 2

42

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<string> names = (string)o.SelectToken("People[0].Roles").Select(t => (string)t).ToList();

文档:使用 SelectToken 查询 JSON

于 2009-11-10T21:38:02.173 回答
1

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

于 2009-11-08T22:39:32.360 回答