我正在从API调用中获取json数据,并且需要从数据中读取特定值。
以下是json的简化版本:
{
"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();
从那里,我需要TopicId的父代的ModuleId值。
我尝试了以下操作,但它返回了父级的所有子级。
foreach (var topicId in topicIds)
{
var moduleId = jo.DescendantsAndSelf()
.OfType<JProperty>()
.Where(p => p.Value == topicId.Value)
.Select(p => p.Parent)
.ToString();
}
我只想要“ TopicId”父级的“ ModuleId”值
您已经有了该topicId
属性,因此只需在循环内从那里向上导航即可获得相应的moduleId
值:
var moduleId = (string)topicId.Parent.Parent.Parent.Parent["ModuleId"];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句