基本上我正在使用HTMLAgilityPack做一些webscraping,并且我将一个巨大的json作为一个字符串,然后我使用json.net包将其转换为JObject
。
现在在JObject
内的某个地方,有一些我想要的东西。但由于它是非常深层嵌套的,我想知道是否确实有一种方法来获取这些对象,而不知道它们在JObject
内究竟在哪里。我所知道的只是他们的名字。有没有办法让我在整个JObject
内进行某种搜索,只知道我正在寻找的对象/属性名称?
可悲的是,我无法找到任何可以使用的相关问题/记录方法。
答案 0 :(得分:1)
这可能对您有用:
private JToken GetValueByKey(JObject jObject, string key)
{
foreach (KeyValuePair<string, JToken> jProperty in jObject)
{
if (jProperty.Key.Equals(key))
{
return jProperty.Value;
}
else if (jProperty.Value is JObject)
{
return GetValueByKey((JObject)jProperty.Value, key);
}
}
return null;
}
它需要您想要在其中搜索键的JObject以及您要搜索的键。 它映射JObject中的所有属性以查看或匹配键,如果不匹配,它将检查或当前属性可以强制转换为JObject。如果它可以转换为JObject,它将检查所有JObjects值或你的密钥匹配。
如果找到匹配项,则会返回与您的密钥匹配的值。
如果在循环访问JObject中的所有属性后找不到匹配项,则它将返回null。