Подстановочный знак в 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
Другие вопросы по тегам