Hvernig á að flokka JSON svar við REST-fullvissu

Í þessari API prófunarleiðbeiningu skoðum við hvernig á að flokka JSON svörun og draga út upplýsingar með því að nota REST-fullvissa bókasafn.

Þegar þú prófar API ertu venjulega að biðja um auðlind, (t.d. með GET eða POST beiðni). Miðlarinn kemur aftur með svar og þá gerir þú nokkrar fullyrðingar um svarið.



Hvernig á að flokka JSON svar

Í þessari kennslu mun ég nota JSONPlaceholder sem er falsað REST API fyrir prófanir og frumgerð. JSONPlaceholder er ókeypis REST þjónustu á netinu sem þú getur notað hvenær sem þú þarft einhver fölsuð gögn.


Nánar tiltekið mun ég nota endapunkt notenda jsonplaceholder .

Beiðni og svar

Þegar við gerum GET beiðni við ofangreinda auðlind fáum við JSON svar sem inniheldur lista yfir notendur. Þessi listi er táknaður sem JSON Array. Hver fylking hefur uppbyggingu sem þessa:


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

Þess vegna, í fullri svörun, verða tíu skrár í fylkinu, hver með sömu JSON uppbyggingu, en með mismunandi gildi.

Tengt:

Nú skulum við byrja á því að flokka og draga út nokkur gildi úr JSON.

Fyrsta prófið væri venjulega að telja fjölda skráninga í fylkinu, svo við skulum byrja á því.


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

Niðurstaðan af ofangreindu símtali myndi prenta 10. Athugaðu $ táknmynd sem þýðir rótarefnið.

Þáttun JSON fylkja og lista

Í dæminu hér að ofan, ef við vildum fá notendanafn allra færslna, gætum við notað:

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

Þetta myndi prenta fylkið eins og:

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

Ef við viljum fá notendanafn fyrstu færslunnar sem við gætum notað:


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

Þetta myndi prenta fyrsta notandanafnið:

Bret

Með því að nota lista getum við notað:

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

Þetta myndi prenta fyrsta notandanafnið:

Bret

Þáttun JSON ArrayList og HashMap

Þegar litið er á ofangreinda JSON uppbyggingu er fyrirtækið í raun kort. Ef við værum bara með eina plötu gætum við notað:


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

sem myndi prenta:

Romaguera-Crona

En ef svarið skilar fylki og við viljum draga fyrsta nafn fyrirtækisins út, gætum við notað:

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

Einnig gætum við notað:

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

báðir munu prenta:


Romaguera-Crona