带有JSONPath的JSON.NET SelectToken

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有JSONPath的JSON.NET SelectToken相关的知识,希望对你有一定的参考价值。

我正在尝试使用带有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

答案

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

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

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

以上是关于带有JSONPath的JSON.NET SelectToken的主要内容,如果未能解决你的问题,请参考以下文章

带有 JsonTextReader 的 JsonPath:一次标记

如何使用 dojox.jsonPath.query 过滤/查询日期

尝试使用 JSON.NET 反序列化带有 [] 字符的 JSON

带有 Json.Net 格式化程序的 ChannelFactory

使用 JSONPATHS 文件到 Redshift 的 JSON 文件 - 无效的 jsonpath 格式

使用带有 LINQ 的 JSON.NET 计算我的 JSON 文件中的子项数