Подстановочный знак в JsonPath
Я анализирую JSON, как показано ниже:
jobs1: [
{
request: {
body: {
jobID: "79ceeeff-53b9-4645-80bd-95dfca6fe1e9",
...
jobs2: [
{
request: {
body: {
jobID: "60e7c286-f936-4f96-87bc-6bd55f107514",
И искать способ использовать подстановочные знаки в пути JSON.
Я использую фреймворк RestAssured в Java. После выполнения кода, как показано ниже:
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?
3 ответа
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"
}
}
}
]
}
Вы получите результат, как показано ниже
[
"79ceeeff-53b9-4645-80bd-95dfca6fe1e9",
"60e7c286-f936-4f96-87bc-6bd55f107514"
]
*.[*].request.body.jobID
это извлечет JobID один, как показано ниже
[
"79ceeeff-53b9-4645-80bd-95dfca6fe1e9",
"60e7c286-f936-4f96-87bc-6bd55f107514"
]
Вы действительно нуждаетесь wildcards
Вот? Похоже, что это может получить то, что вы ожидаете:
..request.body.jobID
Или даже проще:
..jobID