JsonPath:如果满足条件,则选择根级别字段

Dro*_*ona 7 json filter input-filtering jsonpath

鉴于以下Json输入:

{ 
  "category": "fiction",
  "author": "Evelyn Waugh",
  "title": "Sword of Honour",
  "price": 12.99
}
Run Code Online (Sandbox Code Playgroud)

如果作者匹配例如给定名称,我需要选择作者字段.Evelyn Waugh.我正在努力为此编写JsonPath表达式.我尝试了以下但没有成功.谁能建议正确的表达方式?

$.author?(@ == 'Evelyn Waugh')
$.?(@.author == 'Evelyn Waugh')
$..?(@.author == 'Evelyn Waugh')
Run Code Online (Sandbox Code Playgroud)

Jef*_*ado 1

我想你可以这样做:

$[?($.author === @ && @ == 'Evelyn Waugh')]
Run Code Online (Sandbox Code Playgroud)

但如果你问我的话,这是一个非常无用的查询,而且很容易出错。如果还有另一个带有作者名字的财产,那就完蛋了。

坦率地说,您应该找到作者并测试它是否是您期望的名字。不要试图强迫它工作,它不应该这样使用。

  • 为什么 json 路径不应该用于根对象的测试? (6认同)