Meriv Çawa Bersiva JSON-ê bi REST-piştrastkirî Parçe Bike

Di vê tutoriya API Testing-ê de, em awirek didin ka meriv çawa bersiva JSON-ê parçe dike û bi karanîna pirtûkxaneya REST-piştrastkirî agahî derdixe.

Dema ku API-yê diceribînin, hûn bi gelemperî daxwazek ji çavkaniyek dikin, (mînakî bi navgîniya daxwazek GET an POST). Pêşkêşker bi bersivek vedigere û dûv re jî hûn li ser bersivê hin poşmanan dikin.



Meriv Çawa Bersivê JSON Parse Bike

Ji bo vê tutoriyê, ez ê bikar bînim JSONPlaceholder ku ji bo Ceribandin û Prototîpkirinê REST API ya sexte ye. JSONPlaceholder karûbarek BELA online a serhêl e ku hûn kengê ku hin daneyên derewîn hewce bikin hûn dikarin bikar bînin.


Bi taybetî, ez ê xala dawiya bikarhêneran bikar bînim jsonplaceholder .

Daxwaz û Bersiv

Dema ku em ji çavkaniya jorîn daxwazek GET dikin, em bersivek JSON digirin ku navnîşek bikarhêneran tê de ye. Ev lîste wekî Array JSON tête nimînandin. Her array avahiyek bi vî rengî heye:


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

Ji ber vê yekê, di bersiva tevahî de, dê di array deh tomar hebin, ku her yek xwedan heman avahiya JSON e, lê bi nirxên cûda.

Girêdayî:

Naha, em dest bi parsekirin û derxistina hin nirxan ji JSON bikin.

Testmtîhana yekem dê bi gelemperî jimartina tomarên array be, ji ber vê yekê em dest pê bikin.


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

Encama banga jorîn dê 10 çap bike. Bala xwe bidin $ notkirin ku tê wateya hêmana kokê.

Parvekirin û Lîsteyên JSON

Di mînaka jorîn de, heke em dixwazin navê bikarhêner ê hemî navnîşan bistînin, em dikarin bikar bînin:

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

Ev ê array wiha çap bike:

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

Ger em hingê dixwazin navê bikarhêner ê navnîşa yekem bistînin em dikarin bikar bînin:


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

Ev ê navê bikarhêner ê yekem çap bike:

Bret

Bikaranîna Navnîşek em dikarin bikar bînin:

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

Ev ê navê bikarhêner ê yekem çap bike:

Bret

Pirtûka ArrayList û HashMap a JSON

Li avahiya JSON-a jorîn mêze dikin, pargîdanî bi rastî nexşeyek e. Ger tenê tomarek me hebe, em dikarin bikar bînin:


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

ku dê çap bike:

Romaguera-Crona

Lê heke bersiv bersivek vegerîne û em dixwazin navê pargîdaniya yekem derxînin, em dikarin bikar bînin:

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

Wekî din, em dikarin bikar bînin:

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

her du jî dê çap bikin:


Romaguera-Crona