कैसे JSON प्रतिक्रिया के साथ पार्स करने के लिए आश्वासन दिया

इस एपीआई परीक्षण ट्यूटोरियल में, हम JSON की प्रतिक्रिया को पार्स करने और REST- सुनिश्चित लाइब्रेरी का उपयोग करके जानकारी निकालने के तरीके पर एक नज़र डालते हैं।

एपीआई का परीक्षण करते समय, आप आमतौर पर एक संसाधन के लिए एक अनुरोध करते हैं, (जैसे कि जीईटी या पीओटी अनुरोध के माध्यम से)। सर्वर प्रतिक्रिया के साथ वापस आता है और फिर आप प्रतिक्रिया पर कुछ जोर देते हैं।



कैसे JSON प्रतिक्रिया पार्स करने के लिए

इस ट्यूटोरियल के लिए, मैं उपयोग करूंगा JSONPlaceholder जो परीक्षण और प्रोटोटाइप के लिए एक फर्जी ऑनलाइन रीस्ट एपीआई है। JSONPlaceholder एक निःशुल्क ऑनलाइन REST सेवा है जिसका उपयोग आप जब भी कुछ नकली डेटा की आवश्यकता होती है कर सकते हैं।


विशेष रूप से, मैं उपयोगकर्ताओं को समापन बिंदु का उपयोग करूंगा मसखरा

अनुरोध और प्रतिक्रिया

जब हम उपरोक्त संसाधन के लिए एक GET अनुरोध करते हैं, तो हमें JSON प्रतिक्रिया मिलती है जिसमें उपयोगकर्ताओं की एक सूची होती है। इस सूची को JSON Array के रूप में दर्शाया गया है। प्रत्येक सरणी में इस तरह की संरचना होती है:


{
id: 1,
name: 'Leanne Graham',
username: 'Bret',
email: 'Sincere@april.biz',
address: {
street: 'Kulas Light',
suite: 'Apt. 556',
city: 'Gwenborough',
zipcode: '92998-3874',
geo: {

lat: '-37.3159',

lng: '81.1496'
}
},
phone: '1-770-736-8031 x56442',
website: 'hildegard.org',
company: {
name: 'Romaguera-Crona',
catchPhrase: 'Multi-layered client-server neural-net',
bs: 'harness real-time e-markets'
} }

इसलिए, पूर्ण प्रतिक्रिया में, सरणी में दस रिकॉर्ड होंगे, प्रत्येक में एक ही JSON संरचना होगी, लेकिन विभिन्न मूल्यों के साथ।

सम्बंधित:

अब, JSON से कुछ मानों को पार्स और निकालने के द्वारा शुरू करें।

पहला परीक्षण आम तौर पर सरणी में रिकॉर्ड की संख्या की गणना करने के लिए होगा, इसलिए उसी के साथ शुरू करें।


import io.restassured.RestAssured; import io.restassured.http.ContentType; import io.restassured.parsing.Parser; import io.restassured.response.Response; import java.util.List; import static io.restassured.RestAssured.given; public class RestTest {
public static Response doGetRequest(String endpoint) {
RestAssured.defaultParser = Parser.JSON;

return

given().headers('Content-Type', ContentType.JSON, 'Accept', ContentType.JSON).


when().get(endpoint).


then().contentType(ContentType.JSON).extract().response();
}
public static void main(String[] args) {
Response response = doGetRequest('https://jsonplaceholder.typicode.com/users');

List jsonResponse = response.jsonPath().getList('$');

System.out.println(jsonResponse.size());
} }

उपरोक्त कॉल का परिणाम प्रिंट होगा 10 नोट | $ संकेतन जिसका अर्थ है मूल तत्व।

पार्सिंग JSON एरे और सूची

उपरोक्त उदाहरण में, यदि हम सभी प्रविष्टियों का उपयोगकर्ता नाम प्राप्त करना चाहते हैं, तो हम उपयोग कर सकते हैं:

String usernames = response.jsonPath().getString('username'); System.out.println(usernames);

यह सरणी को प्रिंट करेगा जैसे:

[Bret, Antonette, Samantha, Karianne, Kamren, Leopoldo_Corkery, Elwyn.Skiles, Maxime_Nienow, Delphine, Moriah.Stanton]

यदि हम तब पहली प्रविष्टि का उपयोगकर्ता नाम प्राप्त करना चाहते हैं जिसका हम उपयोग कर सकते हैं:


String usernames = response.jsonPath().getString('username[0]');

यह पहला उपयोगकर्ता नाम प्रिंट करेगा:

Bret

एक सूची का उपयोग हम उपयोग कर सकते हैं:

List jsonResponse = response.jsonPath().getList('username'); System.out.println(jsonResponse.get(0));

यह पहला उपयोगकर्ता नाम प्रिंट करेगा:

Bret

पार्सिंग JSON ArrayList और HashMap

उपरोक्त JSON संरचना को देखते हुए, कंपनी वास्तव में एक नक्शा है। यदि हमारे पास केवल एक रिकॉर्ड था, तो हम उपयोग कर सकते हैं:


Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/1'); Map company = response.jsonPath().getMap('company'); System.out.println(company.get('name'));

जो प्रिंट होगा:

Romaguera-Crona

लेकिन अगर प्रतिक्रिया एक सरणी देती है और हम पहली कंपनी का नाम निकालना चाहते हैं, तो हम उपयोग कर सकते हैं:

Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/'); Map company = response.jsonPath().getMap('company[0]'); System.out.println(company.get('name'));

वैकल्पिक रूप से, हम उपयोग कर सकते हैं:

Response response = doGetRequest('https://jsonplaceholder.typicode.com/users/'); List companies = response.jsonPath().getList('company'); System.out.println(companies.get(0).get('name'));

दोनों में से जो छपेगा:


Romaguera-Crona

दिलचस्प लेख