C# 如何根据JObject中的子属性值选择父属性值
我从API调用中获取json数据,需要从数据中读取特定值 以下是json的简化版本:C# 如何根据JObject中的子属性值选择父属性值,c#,json,json.net,C#,Json,Json.net,我从API调用中获取json数据,需要从数据中读取特定值 以下是json的简化版本: { "Modules":[ { "ModuleId":370, "Title":"Getting Oriented", "Modules":[ { "ModuleId":378, "Title":"Artifacts",
{
"Modules":[
{
"ModuleId":370,
"Title":"Getting Oriented",
"Modules":[
{
"ModuleId":378,
"Title":"Artifacts",
"Modules":[
],
"Topics":[
{
"TopicId":379
},
{
"TopicId":380
},
{
"TopicId":381
}
]
}
],
"Topics":[
{
"TopicId":371
},
{
"TopicId":372
},
{
"TopicId":373
}
]
},
{
"ModuleId":389,
"Title":"Build Your Solution",
"Modules":[
{
"ModuleId":390,
"Title":"Core Platform Configuration",
"Modules":[
{
"ModuleId":392,
"Title":"Artifacts",
"Topics":[
{
"TopicId":393
}
]
}
],
"Topics":[
{
"TopicId":391
}
]
}
]
}
]
}
我将其转换为一个JObject,并使用以下代码获取所有topicid
var topicIds = jo.Descendants()
.OfType<JProperty>()
.Where(p => p.Name == "TopicId" &&
p.Value != null)
.ToList();
var-topicIds=jo.subjects()
第()类
.Where(p=>p.Name==“TopicId”&&
p、 值!=null)
.ToList();
从那里我需要TopicId的父节点的ModuleId值
我尝试了以下操作,但它返回了父对象的所有子对象
foreach (var topicId in topicIds)
{
var moduleId = jo.DescendantsAndSelf()
.OfType<JProperty>()
.Where(p => p.Value == topicId.Value)
.Select(p => p.Parent)
.ToString();
}
foreach(topicId中的变量topicId)
{
var moduleId=jo.degenantsandself()
第()类
.Where(p=>p.Value==topicId.Value)
.Select(p=>p.Parent)
.ToString();
}
我只需要“TopicId”父项的“ModuleId”值,因为您已经有了
TopicId
属性,所以只需在循环中从那里向上导航即可获得相应的ModuleId
值:
var moduleId = (string)topicId.Parent.Parent.Parent.Parent["ModuleId"];
Fiddle:您期望的输出是什么?