У меня есть анонимный массив объектов, и я хотел бы найти объект по определенному полю.

Я попробовал это:

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"}
]
0
yaseco 14 Сен 2020 в 17:47

3 ответа

Лучший ответ

Вопрос немного двусмысленный, но синтаксис неверен, синтаксис Json path использует обозначение Groovy's GPath

js.getString("find {it.name == 'David'}")
1
Wilfred Clement 14 Сен 2020 в 16:13

Поскольку вы используете json Array, используйте - $ [0], так как Дэвид находится в первом индексе.

0
javaHolic 14 Сен 2020 в 14:56

Вам может понадобиться

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

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

Название зависит от того, когда вы извлекаете свой ответ

0
Toàn Nguyễn Hải 14 Сен 2020 в 14:56