JsonPath:按字段查找数组中的元素

JsonPath: find an element in an array by field

我有一个匿名对象数组,我想按特定字段查找对象。

我试过这个:

jsonPath.get("$.[?(@.name == 'David')]")

但我收到以下错误:

Invalid JSON expression:
Script1.groovy: 1: Unexpected input: '                         $.[' @ line 1, column 29.
                            $.[?(@.name == 'David')]
                               ^

1 error

我该如何解决?

json是:

[
 {"name": "David"}, {"name": "Ron"}, {"name": "Dana"}
]

您可能需要

$.[?(@.name == 'David')]

=>  $.data[?(@.name == 'David')]
    $.response[?(@.name == 'David')]
    $.body[?(@.name == 'David')]
    ...

名称取决于您提取回复的时间

因为您正在使用 json 数组, 使用 - $[0] , 因为大卫在第一个索引上。

问题有点歧义,但是语法不对,Json path语法使用了Groovy's GPath表示法

js.getString("find {it.name == 'David'}")