Java JsonPath中的通配符

Java JsonPath中的通配符,java,json,groovy,rest-assured,jsonpath,Java,Json,Groovy,Rest Assured,Jsonpath,我正在解析一个JSON,如下所示: List<String> ids = get("/state/").path("*.request.body.jobID"); System.out.println(ids); jobs1:[ { 请求:{ 正文:{ jobID:“79ceeeff-53b9-4645-80bd-95dfca6fe1e9”, ... 工作2:[ { 请求:{ 正文:{ jobID:“60e7c286-f936-4f96-87bc-6bd55f107514”, 并

我正在解析一个JSON,如下所示:

List<String> ids = get("/state/").path("*.request.body.jobID");
System.out.println(ids);
jobs1:[
{
请求:{
正文:{
jobID:“79ceeeff-53b9-4645-80bd-95dfca6fe1e9”,
...
工作2:[
{
请求:{
正文:{
jobID:“60e7c286-f936-4f96-87bc-6bd55f107514”,
并寻找在JSON路径中使用通配符的方法

我正在使用Java中的框架。执行以下代码后:

List<String> ids = get("/state/").path("*.request.body.jobID");
System.out.println(ids);
但我却得到了一个例外:

java.lang.IllegalArgumentException: Invalid JSON expression:
Script1.groovy: 1: unexpected token: *. @ line 1, column 27.
                        *.request.body.jobID
                         ^
我已经阅读了这些教程,但似乎没有任何内容适合我:


如何正确使用JsonPath中的通配符?

*.[*].request.body.jobID
这将单独提取jobID,如下所示

[  
   "79ceeeff-53b9-4645-80bd-95dfca6fe1e9",
   "60e7c286-f936-4f96-87bc-6bd55f107514"
]

您真的需要这里的
通配符吗?这似乎可以检索到您所期望的:

..request.body.jobID
或者更简单:

..jobID
后藤

并在给定图像中输入绿色框

您的模式应该如下所示

*.[*].request.body.jobID

您的JSON应该如下所示

[  
   "79ceeeff-53b9-4645-80bd-95dfca6fe1e9",
   "60e7c286-f936-4f96-87bc-6bd55f107514"
]
{
工作1:[{
请求:{
正文:{
jobID:“79ceeeff-53b9-4645-80bd-95dfca6fe1e9”
}
}
}
],
工作2:[{
请求:{
正文:{
作业ID:“60e7c286-f936-4f96-87bc-6bd55f107514”
}
}
}
]

}
您是否尝试过使用
子对象
而不是
*
?Cf.和@D.Kovács
“children().request.body.jobID”
给出
IllegalArgumentException:没有方法签名:java.util.HashMap.children()适用于参数类型:()值:[]
我也在尝试如何使用通配符。但是如果您需要临时解决方案,下面的方法可以奏效。def jsonSlurper=new jsonSlurper();def jsonResponse=jsonSlurper.parseText(sampleJson);def listOfJobIds=[];jsonResponse.keySet()。每个{node->listOfJobIds.add(jsonResponse[node].request.body.jobID[0])}log.info listOfJobIds;