Как манипулировать данными JSON в Jmeter - PullRequest
0 голосов
/ 03 июля 2018

В скрипте Jmeter мне нужно обработать http-ответ и манипулировать json для отправки в следующем запросе, потому что на самом деле эта манипуляция происходит в клиенте Angular.

Мой Http-ответ:

[
   {
      "function":"nameA",
      "rast":"F1",
      "tag":"EE",
      "probs":"0,987"
   },
   {
      "function":"nameB",
      "rast":"F2",
      "tag":"SE",
      "probs":"0,852"
   },
   {
      "function":"nameC",
      "rast":"F3",
      "tag":"CE",
      "probs":"0,754"
   }
]

Мне нужно преобразовать результат в json ниже, чтобы опубликовать следующий запрос:

[
   {
      "function":"nameA",
      "rast":"F1",
      "type":{
         "name":"EE"
      },
      "id":"alpha"
   },
   {
      "function":"nameB",
      "rast":"F2",
      "type":{
         "name":"SE"
      },
      "id":"alpha"
   },
   {
      "function":"nameC",
      "rast":"F3",
      "type":{
         "name":"CE"
      },
      "id":"alpha"
   }
]

Я фильтрую ответ с помощью этого JSON Extractor:

[*].["function", "rast", "tag"]

Но теперь мне нужно решить другие проблемы:

  1. Добавление атрибута id (одинаково для всех функций)

  2. Добавить объект с именем типа.

  3. Переместить атрибут тега в объект с именем type.

  4. Переименуйте атрибут тега в name.

1 Ответ

0 голосов
/ 04 июля 2018
  1. Добавить JSR223 PostProcessor как дочерний элемент запроса, который возвращает исходный JSON
  2. Поместите следующий код в область «Сценарий»:

    def json = new groovy.json.JsonSlurper().parse(prev.getResponseData()).each { entry ->
        entry << [type: [name: entry.get('tag')]]
        entry.remove('tag')
        entry.remove('probs')
        entry.put('id', 'alpha')
    }
    def newJson = new groovy.json.JsonBuilder(json).toPrettyString()
    log.info(newJson)
    
  3. Вот и все, вы должны увидеть сгенерированный JSON в jmeter.log файле.

    JSR223 PostProcessor manupulate JSON

    Если вам нужно добавить его в переменную JMeter, добавьте следующую строку в конец вашего скрипта:

    vars.put('newJson', newJson)
    

    и вы сможете получить доступ к сгенерированному значению как ${newJson}, где требуется

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...