Как найти длину массива json в json extractor

#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(@)
 

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