【问题标题】:JSON.NET SelectToken with JSONPathJSON.NET SelectToken 和 JSONPath
【发布时间】:2017-12-22 16:32:22
【问题描述】:

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

JSON sn-p:

"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

【问题讨论】:

    标签: c# json.net jsonpath


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢 - 从here 看来,不支持阵列上的@.length
    猜你喜欢
    • 2015-12-22
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 2020-01-08
    相关资源
    最近更新 更多