带有JSONPath的JSON.NET SelectToken

时间:2017-12-22 16:32:23

标签: c# json.net jsonpath

我正在尝试使用带有JSONPath的JSON.NET SelectToken来选择例如longname(eee)的值,其中类型仅为ggg

JSON片段:

"results" : [
  {
     "components" : [
        {
           "longname" : "aaa",
           "shortname" : "bbb",
           "types" : [ "ccc", "ddd" ]
        },
        {
           "longname" : "eee",
           "shortname" : "fff",
           "types" : [ "ggg" ]
        }
     ]
  }]

我无法正确获取JSONPath语法。我尝试了以下内容,我认为它接近正确的解决方案,但始终返回null

 o.SelectToken("results[0].components[?(@.types=='[ggg]')].longname")

我引用了Querying JSON with SelectToken# JSONPath - XPath for JSON并没有感到高兴。

1 个答案:

答案 0 :(得分:1)

好的,所以我学到了一些关于JSONPath的知识并且有一个游戏(using this),我不确定这是否是最好的解决方案,但它确实有效:

results[0].components[?(@.types.length==1&&@.types[0]=="ggg")].longname

不幸的是,我似乎无法找到任何其他信息来表明有更简单的解决方案。