Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查C#的json对象中是否存在嵌套路径?_C#_Json - Fatal编程技术网

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

如何检查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

假设您想检查json对象中是否存在路径“L1.L2.L3”。有一种方法可以一步一步地检查级别(),但我希望省去麻烦,改为检查路径。

您可以使用newtonsoft.json中的SelectToken方法(当找不到匹配项时,token为null):


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

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();
}