我收到来自 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/