如何检查C#的json对象中是否存在嵌套路径?
假设您想检查json对象中是否存在路径“L1.L2.L3”。有一种方法可以一步一步地检查级别(),但我希望省去麻烦,改为检查路径。您可以使用newtonsoft.json中的SelectToken方法(当找不到匹配项时,token为null):如何检查C#的json对象中是否存在嵌套路径?,c#,json,C#,Json,假设您想检查json对象中是否存在路径“L1.L2.L3”。有一种方法可以一步一步地检查级别(),但我希望省去麻烦,改为检查路径。您可以使用newtonsoft.json中的SelectToken方法(当找不到匹配项时,token为null): 我最终使用了这样一种扩展方法: public static bool PathExists(this JObject obj, string path) { var tokens = obj.SelectTokens(path); ret
我最终使用了这样一种扩展方法:
public static bool PathExists(this JObject obj, string path)
{
var tokens = obj.SelectTokens(path);
return tokens.Any();
}
但精神与公认的答案相同。是在序列化之前还是之后?需要解析json字符串或序列化对象可能重复检查这两个:1。2.如果路径存在,但属性值为null或空字符串,则这也将返回null。如果当null是一个可能的值(如“myProp”:“”或“myProp”:null)时,需要SelectToken来标识缺少的标记,则必须设置“errorWhenNoMatch:true)
public static bool PathExists(this JObject obj, string path)
{
var tokens = obj.SelectTokens(path);
return tokens.Any();
}