如何检查C#的json对象中是否存在嵌套路径?

时间:2018-09-05 05:18:41

标签: c# json

say想要检查json对象中是否存在路径“ L1.L2.L3”。有一种逐步检查级别(How to check whether json object has some property)的方法,但是我希望省去麻烦,而改为检查路径。

2 个答案:

答案 0 :(得分:2)

您可以使用newtonsoft.json中的SelectToken方法(如果找不到匹配项,则令牌为null):

    string json = @"
{
    ""car"": {
        ""type"": {
            ""sedan"": {
                ""make"": ""honda"",
                ""model"": ""civics""
            }
        },                
    }
}";

    JObject obj = JObject.Parse(json);
    JToken token = obj.SelectToken("car.type.sedan.make",errorWhenNoMatch:false);
    Console.WriteLine(token.Path + " -> " + token?.ToString());

答案 1 :(得分:1)

我最终使用了这样的扩展方法:

public static bool PathExists(this JObject obj, string path)
{
    var tokens = obj.SelectTokens(path);
    return tokens.Any();
}

但是精神与接受的答案相同。