say想要检查json对象中是否存在路径“ L1.L2.L3”。有一种逐步检查级别(How to check whether json object has some property)的方法,但是我希望省去麻烦,而改为检查路径。
答案 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();
}
但是精神与接受的答案相同。