#json #jmeter
#json #jmeter
Вопрос:
Я использую следующий JSON и запрос для вычисления длины массива в JMeter json extractor.
{ «data»: { «modal»: «HJ», «technicalid»: «e492fc62-a886-67a461b76de8», «ViewModel»: { «series»: [ { «name»: «H_0_G_0_R_0», «UID»: «J_0_G_0_R_0», «description»: «Test1», «тип»: «серия», «группы»: [ { «имя»: «H_0_G_0», «UID»: «G_0_G_0», «описание»: «Группа 1», «тип»: «группа» } ], «Постобработка»: null } ] }, «статус»: «успех» }, «успех»: истина, «StatusCode»: 200, «Сообщение об ошибке»: «» }
Вот запрос.
данные.Модель.серия [0].группы.длина
Это отлично работает в онлайн-jsonquerytool. Когда я использую этот запрос в JMeter json extractor, он возвращает null. Я предполагаю, что это связано с тем, что он возвращает целое число, потому что другие подобные запросы, возвращающие строки, отлично работают с json extractor. Как найти длину массива в JMeter json extractor?
Ответ №1:
Зачем JSON extractor для вычисления длины? Вы могли бы использовать постпроцессор. Например, JSR223 post processer с использованием groovy script.
import groovy.json.*
def response = prev.responseDataAsString ;
def json = new JsonSlurper().parseText(response) ;
def sizeResultPractitioners = json.data.viewModel.series[0].groups.size();
log.info("---------->" sizeResultPractitioners);
Я попробовал с вашей полезной нагрузкой ответа JSON, а также попробовал с измененной полезной нагрузкой ответа,
Ответ №2:
С помощью JSON Extractor вы можете указать «Номер совпадения» как -1
:
и количество совпадений будет доступно как foo_matchNr
переменная JMeter:
Альтернативным вариантом является JSON JMESpath Extractor, который предоставляет length()
функцию, позволяющую получить размер массива как:
length(data.viewModel.series[0].groups)
или, если вы предпочитаете выражения канала
data.viewModel.series[0].groups | length(@)