Java JsonPath中的通配符
我正在解析一个JSON,如下所示: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”, 并
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;