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

问题描述

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

我尝试过:

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"}
]

解决方法

问题有点模棱两可,但是语法不正确,Json path语法使用Groovy's GPath表示法

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

您可能需要

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

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

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

,

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