使用 Json.Net 从嵌套 JSON 中获取密钥的路径

Sum*_*dam 0 .net c# json json.net jpath

我有一个很大的嵌套 JSON。我不知道 JSON 的结构。我只有 JSON 中存在的一组键,但我不知道 JSON 中的具体位置。假设密钥存在于其中的某个位置,如何从未知的 JSON 结构中找出密钥的路径?

Bri*_*ers 5

如果您的 JSON 结构未知,您可以将其解析为JToken如下所示:

JToken token = JToken.Parse(json);
Run Code Online (Sandbox Code Playgroud)

从那里,您可以使用 或SelectToken()SelectTokens()递归下降JsonPath表达式来查找与键匹配的属性(或多个属性):

JToken match = token.SelectToken("$.." + keyToFind);
Run Code Online (Sandbox Code Playgroud)

获得匹配的令牌后,您可以使用其Path属性获取它的路径:

string path = match?.Path;
Run Code Online (Sandbox Code Playgroud)

这是一个工作演示,假设您有多个密钥需要查找,并且每个密钥可以在 JSON 中出现多次: https: //dotnetfiddle.net/9Em9Iq