Синтаксический анализ JSON с помощью jmeter для передачи массива json в том виде, в каком он был из предыдущего ответа HTTP на новый запрос HTTP.
У меня был запрос, касающийся извлечения части ответа json, полученного из 1-го запроса в jmeter, для формирования нового HTTP-запроса.
Я хотел извлечь 1 блок информации JSON (как есть) с двойными кавычками и двоеточием как часть 2-го HTTP-запроса.
{
"details": [
{
"outBound": [
{
"info": {
"date": "2016-08-11",
"class": "M",
"code": 70,
"pricing": [
{
"totalAmount": 68.8,
"totalTaxAmount": 30.8,
"baseFareAmount": 38.0
}
],
"totalAmount": 68.8,
"totalDuration": 160,
"referenceNumber": 1,
"type": "RP",
"id": 1
},
"segments": [
{
"date": "2016-08-11",
"className": "Standard (W)",
"code": 70,
"totalAmount": 68.8,
"totalDuration": 160,
"referenceNumber": 1,
"type": "RP",
"duration": 160,
"number": "100"
}
]
},
{
"info": {
"date": "2016-08-11",
"class": "M",
"code": 70,
"pricing": [
{
"totalAmount": 78.8,
"totalTaxAmount": 40.8,
"baseFareAmount": 38.0
}
],
"totalAmount": 78.8,
"totalDuration": 160,
"referenceNumber": 2,
"type": "RP",
"id": 2
},
"segments": [
{
"date": "2016-08-11",
"className": "Standard (W)",
"code": 70,
"totalAmount": 78.8,
"totalDuration": 160,
"referenceNumber": 2,
"type": "RP",
"duration": 160,
"number": "200"
},
{
"date": "2016-08-11",
"className": "Standard (W)",
"code": 70,
"totalAmount": 78.8,
"totalDuration": 160,
"referenceNumber": 2,
"type": "RP",
"duration": 160,
"number": "100"
}
]
}
],
"resultCount": {
"count1": 1,
"count2": 1
},
"displayCount": 2
}
]
}
>Expected Output:
{
"info": {
"date": "2016-08-11",
"class": "M",
"code": 70,
"pricing": [
{
"totalAmount": 68.8,
"totalTaxAmount": 30.8,
"baseFareAmount": 38.0
}
],
"totalAmount": 68.8,
"totalDuration": 160,
"referenceNumber": 1,
"type": "RP",
"id": 1
},
"segments": [
{
"date": "2016-08-11",
"className": "Standard (W)",
"code": 70,
"totalAmount": 68.8,
"totalDuration": 160,
"referenceNumber": 1,
"type": "RP",
"duration": 160,
"number": "100",
}
]
}
Я пытался использовать JSON PATH POST Processor, но я получал извлеченные данные в виде =
вместо двоеточия и строковых данных без двойных кавычек.
1 ответ
Решение
Я бы рекомендовал использовать JSR223 PostProcessor вместо этого JSON Path.
- Добавьте JSR223 PostProcessor как дочерний элемент запроса, который возвращает выше JSON
- выберите
groovy
в выпадающем меню "Язык" Поместите следующий код в область "Сценарий" постпроцессора JSR223:
import groovy.json.JsonOutput import groovy.json.JsonSlurper def jsonSlurper = new JsonSlurper(); def response = jsonSlurper.parseText(prev.getResponseDataAsString()); def json = JsonOutput.toJson(response.details[0].outBound[0]); vars.put("json", json);
- Назовите извлеченное значение
${json}
где требуется
Рекомендации:
- Разбор и создание JSON - чтобы узнать, как работать с JSON в Groovy
- Beanshell против JSR223 против Java JMeter Scripting: снижение производительности, которого вы так долго ждали! - руководство по установке Groovy движка (для JMeter < 3.0) и скриптов Groovy в лучших практиках JMeter