json - 如何在 JSONPath 中按字符串过滤?

我收到来自 Facebook API 的 JSON 响应,如下所示:

{
  "data": [
     {
       "name": "Barack Obama", 
       "category": "Politician", 
       "id": "6815841748"
     }, 
     {
       "name": "Barack Obama's Dead Fly", 
       "category": "Public figure", 
       "id": "92943557739"
     }]
 }

我想对其应用 JSONPath 以仅返回具有“政治家”类别的结果。从我读到的,看来我需要做:

$.data[?(@.category=='Politician')]

但根据 testing tool我发现,这行不通。我找到了 another question这表明我应该使用“eq”而不是“==”,但这也不起作用。我在这里做错了什么?

最佳答案

您的查询看起来不错,并且您的数据和查询对我来说可以使用 this JsonPath解析器。另请参阅该页面上的示例查询以获取更多谓词示例。

您使用的测试工具似乎有问题。甚至来自 JsonPath site 的示例正在返回不正确的结果:

例如,给定:

{
    "store":
    {
        "book":
        [ 
            { "category": "reference",
              "author": "Nigel Rees",
              "title": "Sayings of the Century",
              "price": 8.95
            },
            { "category": "fiction",
              "author": "Evelyn Waugh",
              "title": "Sword of Honour",
              "price": 12.99
            },
            { "category": "fiction",
              "author": "Herman Melville",
              "title": "Moby Dick",
              "isbn": "0-553-21311-3",
              "price": 8.99
            },
            { "category": "fiction",
              "author": "J. R. R. Tolkien",
              "title": "The Lord of the Rings",
              "isbn": "0-395-19395-8",
              "price": 22.99
            }
        ],
        "bicycle":
        {
            "color": "red",
            "price": 19.95
        }
    }
}

还有表达式:$.store.book[?(@.length-1)].title,该工具返回所有个标题的列表。

https://stackoverflow.com/questions/12585968/

相关文章:

php - 从 PHP 中的 JSON POST 读取 HTTP 请求正文的问题

java - 更新 JSONObject 中的元素

javascript - 如何使用 Typeahead.js 0.10 一步一步/远程/预取/本地

c# - EF 4.1 - 代码优先 - JSON 循环引用序列化错误

json - JSON 表示中的链接关系

c# - 使用 Nancy 返回包含有效 Json 的字符串

json - bash 中的转义字符(对于 JSON)

javascript - 即使有循环引用,如何将 DOM 节点序列化为 JSON?

javascript - 如何从 AJAX 调用中返回一个数组?

json - 使用逗号拆分 NSString