我正在解析如下的JSON:
jobs1: [
{
request: {
body: {
jobID: "79ceeeff-53b9-4645-80bd-95dfca6fe1e9",
...
jobs2: [
{
request: {
body: {
jobID: "60e7c286-f936-4f96-87bc-6bd55f107514",
寻找在JSON路径中使用通配符的方法。
我在Java中使用RestAssured框架。执行如下代码后:
List<String> ids = get("/state/").path("*.request.body.jobID");
System.out.println(ids);
我希望得到:
[79ceeeff-53b9-4645-80bd-95dfca6fe1e9, 60e7c286-f936-4f96-87bc-6bd55f107514]
但我得到了一个例外:
java.lang.IllegalArgumentException: Invalid JSON expression:
Script1.groovy: 1: unexpected token: *. @ line 1, column 27.
*.request.body.jobID
^
我已经浏览了这些教程,但似乎没有什么对我有用:
https://github.com/json-path/JsonPath
http://goessner.net/articles/JsonPath
如何在JsonPath中正确使用通配符?
答案 0 :(得分:2)
*.[*].request.body.jobID
这将单独提取jobID,如下所示
[
"79ceeeff-53b9-4645-80bd-95dfca6fe1e9",
"60e7c286-f936-4f96-87bc-6bd55f107514"
]
答案 1 :(得分:2)
GOTO http://jsonpath.herokuapp.com/
在给定图像中输入绿框等输入。
您的模式应如下所示
*。[*]。request.body.jobID
您的JSON应如下所示
{
jobs1: [{
request: {
body: {
jobID: "79ceeeff-53b9-4645-80bd-95dfca6fe1e9"
}
}
}
],
jobs2: [{
request: {
body: {
jobID: "60e7c286-f936-4f96-87bc-6bd55f107514"
}
}
}
]
}
&#13;
您的结果将如下所示
[
"79ceeeff-53b9-4645-80bd-95dfca6fe1e9",
"60e7c286-f936-4f96-87bc-6bd55f107514"
]
&#13;
答案 2 :(得分:0)
你真的需要wildcards
吗?这似乎能够找回你的期望:
..request.body.jobID
甚至更简单:
..jobID