我花了很多时间试图弄清楚如何编写符合我需要的 json 路径,但没有成功。 我希望有人能够帮助我。
我有一个非常简单的 JSON 对象,它看起来像:{"code":..., "message":...}
,注意这不是一个对象列表
我试图找到一个 JSON 路径,当代码 > 100 时返回 [%code%],否则返回 []。
我发现 $[?(@.code > 100)].code
适用于 Jayway & Gatling 实现,但不适用于 Nebahle 和 Goessner 实现(根据 http://jsonpath.herokuapp.com/)。
遗憾的是,我正在从事的项目正在使用带有 Goessner 实现的 jsonpath 库。 有没有人知道可以用于任何实现的 jsonpath 的想法?
谢谢!
答案 0 :(得分:0)
在将过滤器表达式应用于 JSON 对象的不同 JSONPath 实现之间没有达成一致。有些将其应用于对象本身(例如 Jayway),有些将其应用于 JSON 对象的每个值(例如 Goessner Javascript),而有些似乎根本不支持它(例如 Goessner PHP)。 Christoph Burgmer 的 JSONPath 比较报告了这些差异 here。
在你的情况下,假设 Goessner Javascript,你可能能够逃脱
$[?(@>100)] (1)
或者更安全
$[?(typeof(@) == 'number' && @ > 100)] (2)
例如,给定 {"code":101, "message":"101"}
,(1) 产生
[101,"101"]
while (2) 产生
[101]