Извлечение значений из JSON с помощью массива верхнего уровня с помощью Jmeter JSON Extractor

В моем плане тестирования JMeter есть сэмплер, который возвращает список авторов и их книги в формате JSON. Я хочу получить только id всех авторов. То есть, в этом случае я должен получить [1,2,3] в имени переменной, чтобы я мог использовать контроллер ForEach для запуска другого сэмплера для получения подробной информации о каждом авторе. Я знаю, что могу использовать экстрактор JSON, чтобы получить это, но я не получаю все данные, которые ищу.

    [
    	{
    		"firstName": "William",
    		"lastName":"Shakespeare",
    		"Title": "Mr",
    		"id": "1",
    		"books": [
    			{
    				"id": "WS1",
    				"title": "King John",
    				"year":"1596"
    			},
    			{
    				"id": "WS2",
    				"title": "Julius Caesar",
    				"year": "1599"
    			},
    			{
    				"id": "WS3",
    				"title": "Romeo and Juliet",
    				"year": "1595"
    			}
    		],
    		"Nationality": "English"
    	},
    	{
    		"firstName": "Sidney",
    		"lastName":"Sheldon",
    		"Title": "Mr",
    		"id": "2",
    		"books": [
    			{
    				"id": "SS1",
    				"title": "The Naked Face",
    				"year":"1969"
    			},
    			{
    				"id": "SS2",
    				"title": "A Stranger in the Mirror",
    				"year": "1976"
    			},
    			{
    				"id": "SS3",
    				"title": "Bloodline",
    				"year": "1977"
    			}
    		],
    		"Nationality": "American"
    	},
    	{
    		
    		"firstName": "Eiichiro",
    		"lastName":"Oda",
    		"Title": "Mr",
    		"id": "3",
    		"books": [
    			{
    				"id": "EO1",
    				"title": "Wanted",
    				"year":"1992"
    			},
    			{
    				"id": "EO2",
    				"title": "Ikki Yako",
    				"year": "1993"
    			},
    			{
    				"id": "EO3",
    				"title": "Monsters",
    				"year": "1994"
    			}
    
    		],
    		"Nationality": "Japanese"
    	}
    ]

Используя JSON Extractor Post processor, когда я использовал выражение JSON Path $ .. id, оно дает мне все идентификаторы, включая идентификаторы книг. Например, он возвращает [1, WS1, WS2, WS3,2, SS1, SS2, SS3,3, EO1, EO2, EO3]. Я думаю .. в JSON имеется в виду рекурсивный поиск, чего я не хочу. Мне нужны идентификаторы только с верхнего уровня. Можно ли этого достичь, используя встроенный JSON Extractor, или мне нужно использовать какой-то Groovy-скрипт.


person JSDeveloper    schedule 12.11.2019    source источник


Ответы (1)


Этот оператор .. означает глубокое сканирование, если вам нужны только идентификаторы верхнего уровня, вам следует используйте следующее выражение JsonPath:

$.[*].id

Демо:

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

Дополнительная информация: Тестирование API с помощью JMeter и Экстрактор JSON

person Dmitri T    schedule 12.11.2019
comment
Спасибо. это то, что я ищу. Большое тебе спасибо - person JSDeveloper; 12.11.2019