我有一个很大的嵌套 JSON。我不知道 JSON 的结构。我只有一组存在于 JSON 中的键,但我不知道 JSON 中的确切位置。假设密钥存在于其中某处,我如何从未知的 JSON 结构中找出密钥的路径?
问问题
1981 次
4 回答
4
如果您的 JSON 结构未知,您可以将其解析为JToken
如下形式:
JToken token = JToken.Parse(json);
从那里,您可以使用SelectToken()
或SelectTokens()
与递归下降JsonPath表达式一起使用来查找与键匹配的属性(或多个属性):
JToken match = token.SelectToken("$.." + keyToFind);
一旦你有了匹配的令牌,你就可以使用它的Path
属性来获取它的路径:
string path = match?.Path;
这是一个工作演示,假设您有多个要查找的键,并且每个键可以在 JSON 中出现多次: https ://dotnetfiddle.net/9Em9Iq
于 2018-12-27T02:09:09.927 回答
0
对于未知结构,您可以遍历对象:
var reader = new JsonTextReader(new StringReader(jsonText))
while (reader.Read())
{
// Do a condition on the variables reader.TokenType, reader.ValueType, reader.Value
}
于 2018-12-26T14:19:07.833 回答
0
您可以使用
JObject o = JObject.Parse(<yourjson>);
dynamic obj = o.SelectTokens("$..Product");
于 2018-12-26T14:20:27.873 回答
0
此方法将记录您的顶级 json 中键等于“键”的所有路径
var keys = jobject.Properties().Where(p => p.Name == key).ToList();
keys.ForEach(i => Console.WriteLine(i.Path));
这不会以递归方式工作,但很容易从那里进行递归搜索
于 2018-12-26T14:23:50.590 回答