英文:
JsonPath: find an element in an array by field
问题
我有一个匿名对象数组,我想通过特定字段找到一个对象。
我尝试了这个:
jsonPath.get("$.[?(@.name == 'David')]")
但是我得到了以下错误:
无效的JSON表达式:
Script1.groovy: 1: 预期外的输入: ' $.[\' @ line 1, column 29.
$.[?(@.name == 'David')]
^
1 错误
我该如何修复这个问题?
JSON 数据如下:
[
{"name": "David"}, {"name": "Ron"}, {"name": "Dana"}
]
英文:
I have an anonymous array of objects and I'd like to find an object by a specific field.
I tried this:
jsonPath.get("$.[?(@.name == 'David')]")
but I'm getting the following error:
Invalid JSON expression:
Script1.groovy: 1: Unexpected input: ' $.[' @ line 1, column 29.
$.[?(@.name == 'David')]
^
1 error
How do I fix that?
The json is:
[
{"name": "David"}, {"name": "Ron"}, {"name": "Dana"}
]
答案1
得分: 3
问题有点不明确,但语法是错误的,Json path
语法使用 Groovy
的 GPath
表示法
js.getString("find {it.name == 'David'}")
英文:
The question is a bit ambiguous, But the syntax is incorrect, Json path
syntax uses Groovy's GPath
notation
js.getString("find {it.name == 'David'}")
答案2
得分: 0
你可能需要
$.[?(@.name == 'David')]
=> $.data[?(@.name == 'David')]
$.response[?(@.name == 'David')]
$.body[?(@.name == 'David')]
...
名称取决于您提取响应的时间。
英文:
You may need
$.[?(@.name == 'David')]
=> $.data[?(@.name == 'David')]
$.response[?(@.name == 'David')]
$.body[?(@.name == 'David')]
...
The name depends on when you extract your response
答案3
得分: 0
因为您正在使用 JSON 数组,
所以请使用 - $[0],
因为 David 在第一个索引上。
英文:
Because You are using json Array ,
do use - $[0] ,
since david is on first index.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论