Як разабраць адказ JSON з дапамогай JSON Extractor JMeter

Пачынаючы з JMeter 3.0, значна лягчэй здабываць дадзеныя з адказаў JSON, выкарыстоўваючы экстрактар ​​зменных JSON. JSON - гэта надзвычай просты фармат дадзеных, які прыняў XML некалькі гадоў таму.

Усё большая колькасць REST API і сервераў выкарыстоўвае JSON у якасці асноўнага фармату абмену дадзенымі. Тут мы будзем выкарыстоўваць JMeter для аналізу адказу JSON.

Калі ў вас не ўсталяваны JMeter, прачытайце гэты артыкул, якая тлумачыць як усталяваць JMeter на Mac OS .


Дапусцім, у нас ёсць адказ JSON наступным чынам:

{
'store': {
'book': [

{


'category': 'reference',


'author': 'Nigel Rees',


'title': 'Sayings of the Century',


'price': 8.95

},

{


'category': 'fiction',


'author': 'Evelyn Waugh',


'title': 'Sword of Honour',


'price': 12.99

}
],
'bicycle': {

'color': 'red',

'price': 19.95
}
},
'expensive': 10 }

Каб разабраць вышэйзгаданы JSON з JMeter, нам трэба дадаць JSON Extractor у наш план выпрабаванняў.


Пстрыкніце правай кнопкай мышы на План тэставання -> Дадаць -> Пасляапрацоўшчыкі -> Экстрактар ​​JSON



Цяпер мы павінны ўбачыць наступны пункт гледжання:


У поле выразаў шляху JSON мы можам ўставіць наш шлях JSON для аналізу адказу JSON

Вось некалькі прыкладаў выразаў Json Path, якія можна выкарыстоўваць для здабывання дадзеных з дакумента Json, прадстаўленага вышэй:

+---------------------------------------+--------------------------------------------------------------+ | JSONPath





| Result










| +---------------------------------------+--------------------------------------------------------------+ | $.store.book[*].author


| The authors of all books






| | $..author




| All authors









| | $.store.*




| All things, both books and bicycles




| | $.store..price



| The price of everything






| | $..book[0,1]




| The first two books







| | $..book[:2]




| All books from index 0 (inclusive) until index 2 (exclusive) | | $..book[2:]




| Book number two from tail






| | $..book[?(@.isbn)]



| All books with an ISBN number





| | $.store.book[?(@.price < 10)]
| All books in store cheaper than 10




| | $..book[?(@.price <= $[‘expensive’])] | All books in store that are not “expensive”


| | $..book[?(@.author =~ /.*REES/i)]
| All books matching regex (ignore case)



| | $..*





| Give me every thing







| | $..book.length()



| The number of books







| +---------------------------------------+--------------------------------------------------------------+