有一个 JSON 文件长这样:
{
"men": [
{
"name": "Jordan",
"phone": "333-333-33"
},
{
"name": "Timothey",
"phone": "444-444-44"
}
],
"women": [
{
"name": "Jordan",
"phone": "111-111-11"
},
{
"name": "Sasha",
"phone": "222-222-22"
}
]
}
我想查找所有名字以J开头的人,并确定这个人是男性还是女性。
var jsonProps = jsonDoc.Descendants().Where(t => t.Type == JTokenType.Property && ((JProperty)t).Name == prop);
var startsWithJ = jsonProps.Where(t => ((JProperty)t).Value.ToString().StartsWith("J"));
foreach (var person in startsWithJ)
{
Console.WriteLine(person.Value<string>());
Console.WriteLine(person.Parent.Parent.Value<string>());
}
问题在于person.Parent.Parent为null,而我期望它是JArray或至少是JToken,或者至少是某个JToken,这样我就可以获取其值。
更新: 我有大约100种类型使用类似的数据结构。这些集合(男性、女性)可以在任何嵌套级别上,例如员工包括男性和女性集合,或学生包括男性和女性集合。我不能为我的解决方案中的每种类型创建强类型对象。有时我需要从men/women集合中删除对象,并检查此后集合是否还有任何元素。