jmeter: я хочу извлечь 2 значения из 2 различных json объектов, где 1 json объект проверит мое состояние и другое значение, которое я хочу извлечь - PullRequest
2 голосов
/ 11 марта 2020

My JSON Ответ:

{
"results": [
    {
      "attributes": [
        {
          "format": "internal",
          "name": "resourceid",
          "type": "STRING",
          "value": "56B15190000015E85E57923F0000033B"
        },        
        {
          "format": "attribute",
          "name": "ds6w:identifier",
          "type": "string",
          "value": "ald7_al"
        }
      ]
    },
    {
      "attributes": [
        {
          "format": "internal",
          "name": "resourceid",
          "type": "STRING",
          "value": "56B15190000015E85E578B1F000001B6"
        },        
        {
          "format": "attribute",
          "name": "ds6w:identifier",
          "type": "string",
          "value": "fbh1"
        }
      ]
    },
    {
      "attributes": [
        {
          "format": "internal",
          "name": "resourceid",
          "type": "STRING",
          "value": "56B15190000015E85E578F7800000211"
        },
        {
          "format": "attribute",
          "name": "ds6w:identifier",
          "type": "string",
          "value": "u89cf"
        }
      ]
    }    
  ]
}

Я хочу получить '56B15190000015E85E57923F0000033B', где value = 'ald7_al'

Так что в основном в пределах jsonarray у меня есть jsonobjects, и для одного jsonobject У меня есть два jsonobject, где secong jsonobject проверит мой параметр условия, и я хочу получить значение из первого jsonobject

Для получения результата для решения проверки условия я использовал
JSON выражение экстрактора как -> $ .. Атрибуты [? (@. value == ald7_al)], которые дают мне второй json блок, но я хочу значение из первого json блока.

Пожалуйста, помогите мне, если у вас есть какие-либо входы. Заранее благодарю за помощь!

1 Ответ

1 голос
/ 11 марта 2020

Начиная с JMeter 5.2.1 это невозможно со встроенными компонентами JMeter

Таким образом, у вас есть JSR223 PostProcessor и Groovy язык, пример кода, который должен решить вашу проблему, будет выглядеть примерно так:

def results = new groovy.json.JsonSlurper().parse(prev.getResponseData()).results

0.upto(results.size() - 1, { index ->
    def attributes = results[index].attributes
    if (attributes[1].get('value').equals('ald7_al')) {
        vars.put('value', attributes[0].get('value'))
    }
})

Добавьте его как дочерний элемент запроса, который возвращает выше JSON, и, если все пойдет хорошо, вы сможете получить доступ к искомому значению как ${value}, где это необходимо.

Дополнительная информация:

...