Yadda Ake Amsar JSON Amsawa tare da SAURAN-tabbatacce

A cikin wannan koyarwar gwajin API, muna duban yadda zamuyi bayani game da JSON da kuma fitar da bayanai ta amfani da dakin karatun da aka tabbatar.

Lokacin gwajin API, yawanci kuna yin buƙata zuwa wata hanya, (misali ta hanyar buƙatar GET ko POST). Sabar zata dawo tare da amsa sannan kuma kayi wasu maganganu akan martani.



Yadda Ake Faɗa Amsar JSON

Don wannan karatun, zan yi amfani da shi Mai Matsayi wanda karya ne REST API akan layi don Gwaji da Samun samfuri. JSONPlaceholder sabis ne na REST na kyauta wanda zaka iya amfani dashi duk lokacin da kake buƙatar wasu bayanan karya.


Musamman musamman, Zan yi amfani da ƙarshen masu amfani marwa.bar .

Nemi da Amsa

Lokacin da muka gabatar da buƙatar GET ga kayan da ke sama, muna samun amsa JSON wanda ya ƙunshi jerin masu amfani. Wannan jerin ana wakilta azaman JSON Array. Kowane tsararru yana da tsari kamar haka:


{
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'
} }

Saboda haka, a cikin cikakkiyar amsa, za a sami rikodin guda goma a cikin jeri, kowannensu yana da tsarin JSON iri ɗaya, amma tare da ƙimomi daban-daban.

Shafi:

Yanzu, bari mu fara da nazarin da cire wasu ƙimomi daga JSON.

Gwajin farko zai kasance yawan ƙididdiga a cikin jeri, don haka bari mu fara da hakan.


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());
} }

Sakamakon kiran da ke sama zai buga 10. Lura da $ notation wanda ke nufin tushen kashi.

Arsaddamar da JSON Arrays da Lists

A cikin misalin da ke sama, idan muna son samun sunan mai amfani na duk shigarwar, za mu iya amfani da:

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

Wannan zai buga tsararru kamar:

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

Idan kuma muna son samun sunan mai amfani na farkon shigarwa zamu iya amfani da:


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

Wannan zai buga sunan mai amfani na farko:

Bret

Amfani da Lissafi zamu iya amfani da:

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

Wannan zai buga sunan mai amfani na farko:

Bret

Gyara JSON ArrayList da HashMap

Idan aka kalli tsarin JSON na sama, kamfanin ainihin taswira ne. Idan kawai muna da rikodin guda ɗaya, zamu iya amfani da:


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

wanda zai buga:

Romaguera-Crona

Amma idan amsa ta dawo da tsari kuma muna son cire sunan kamfanin farko, zamu iya amfani da:

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

A madadin, zamu iya amfani da:

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

duka biyu zasu buga:


Romaguera-Crona