我正在使用json.net,我有类似的json数据,
[
{
"ID":1098,
"Name":"JC",
"Issues":[
{
"PriorityLevel":"Low",
"State":"Open"
},
{
"PriorityLevel":"Low",
"State":"Open"
}
]
}
]
我只想通过linq从问题中获取孩子们的数据。我可以达到父母,但不能孩子。如果我直接联系到儿童数据,我不需要为循环提供多个。
谢谢。
答案 0 :(得分:3)
您可以创建一个Json对象并将属性提取为Anonymouse类型,然后可以使用Linq进行查询。
string response = @"[{
""ID"":1098,
""Name"":""JC"",
""Issues"":[
{
""PriorityLevel"":""Low"",
""State"":""Open""
},
{
""PriorityLevel"":""Low"",
""State"":""Open""
}
]}]";
var jsonObject = JObject.Parse(response);
var issues = jsonObject["Issues"].Select(x => new
{
PriorityLevel = (string)x.SelectToken("PriorityLevel"),
State = (string)x.SelectToken("State")
});
您使用SelectToken来抓住问题的子项。现在,您可以根据需要查询问题。
var lowPriorities = issues.Where(x => x.PriorityLevel == "Low");
以下是“Deserializing Using LINQ Example”上json.net页面的直接链接。
答案 1 :(得分:1)
你去吧
{
var json = @"[ {
""ID"":1098,
""Name"":""JC"",
""Issues"":[
{
""PriorityLevel"":""Low"",
""State"":""Open""
},
{
""PriorityLevel"":""Low"",
""State"":""Open""
}
]}]";
var a = JArray.Parse(json);
var issues = a.SelectMany (x => x["Issues"]);
var lowPriorities = issues.Where(x => ((string) x["PriorityLevel"]) == "Low");
}