Как извлечь вложенные элементы в ответ JSON с помощью экстрактора JSON в JMeter

Я хотел бы извлечь элемент на основе условия внутри вложенного ответа JSON. Используя приведенный ниже пример, который широко искали, я хотел бы извлечь storeid всех книг, созданных Foo Bar:

{
    "store": {
        "storeId": 1
        "book": [
            {
                "category": "reference",
                "author": [
                      {
                       "Nigel Rees",
                       "Foo Bar"
                      }
                ],
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
                "author": [
                      { 
                       "Evelyn Waugh"
                      }
                ],
                "title": "Sword of Honour",
                "price": 12.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}

Я пробовал использовать такие выражения, как: $ .store [? (@ .. author == 'Foo Bar')]. StoreId

Я также попытался увидеть, есть ли вообще какой-либо магазин, используя: $ .store [*]. Book [? (@. Author == 'Foo Bar')]

Но результата не было ... Помогите, пожалуйста. Спасибо!


person achan    schedule 01.09.2020    source источник


Ответы (1)


Созданный вами недопустимый JSON, поэтому вы не сможете использовать для него JSON Extractor.

Если вы измените этот хороший пример, который вы даже не сможете правильно скопировать и вставить, чтобы включить ваш storeId:

{
  "store": {
    "storeId": 1,
    "book": [
      {
        "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      {
        "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      {
        "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      {
        "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  },
  "expensive": 10
}

Вы сможете извлечь storeId, где одним из авторов является Nigel Rees, используя следующее выражение:

$.store[?(@.book[?(@.author=="Nigel Rees")])].storeId

Демо:

введите описание изображения здесь

Больше информации:

person Dmitri T    schedule 01.09.2020
comment
Спасибо, Дмитрий, но я думаю, что это будет извлекать только все storeId с книгой и не смотреть на вложенного автора == Nigel Rees ... - person achan; 02.09.2020