Få en værdi ved at indtaste en JSONArray

1. Oversigt

JSON er et letvægts- og sproguafhængigt dataudvekslingsformat, der bruges til de fleste klient-server-kommunikationer.

JSONObjekt og JSONArray er de to almindelige klasser, der normalt findes i de fleste af JSON-behandlingsbibliotekerne. EN JSONObjekt gemmer uordnede nøgleværdipar, ligesom en Java Kort implementering. EN JSONArrayderimod er en ordnet rækkefølge af værdier meget som en Liste eller a Vektor i Java.

I denne vejledning bruger vi JSON-Java (org.json) bibliotek og lære at behandle en JSONArray for at udtrække værdi for en given nøgle. Hvis det er nødvendigt, har vi en introduktion til dette bibliotek.

2. Maven-afhængighed

Vi starter først med at tilføje nedenstående afhængighed i vores POM:

 org.json json 20180813 

Vi kan altid finde ud af den nyeste version af JSON-Java på Maven Central.

3. Opbygning af kontekst

En JSON-meddelelse består normalt af JSON-objekter og arrays, som kan være indlejret i hinanden. EN JSONArray objekt er lukket inden for firkantede parenteser [ ] der henviser til, at JSONObjekt er lukket i krøllede seler {}. Lad os for eksempel overveje denne JSON-besked:

[{"name": "John", "city": "chicago", "age": "22"}, {"name": "Gary", "city": "florida", "age": "35 "}, {" name ":" Selena "," city ":" vegas "," age ":" 18 "}]

Det er klart, at det er en række JSON-objekter. Hvert JSON-objekt i dette array repræsenterer vores kundepostbesiddelse et navn, alder, og by som dets attributter eller nøgler.

4. Behandling JSONArray

I betragtning af ovenstående JSON, hvad hvis vi ønsker at finde ud af navnene på alle vores kunder? Med andre ord, givet en nøgle, "navn" i vores eksempel, hvordan kan vi gå til at finde alle de værdier, der er kortlagt til den nøgle i et givet JSON-array?

Som vi ved, a JSONArray er en liste over JSON-objekter. Så lad os finde alle værdier for en given nøgle:

public List getValuesForGivenKey (String jsonArrayStr, String key) {JSONArray jsonArray = new JSONArray (jsonArrayStr); returnere IntStream.range (0, jsonArray.length ()) .mapToObj (index -> ((JSONObject) jsonArray.get (index)). optString (key)) .collect (Collectors.toList ()); }

I det foregående eksempel:

  • For det første gentager vi hele listen over objekter i et JSON-array
  • Så for hver JSONObjekt, får vi værdien kortlagt til den givne nøgle

Også metoden optString () returnerer en tom streng, hvis der ikke findes en sådan nøgle.

Ved påberåbelse getValuesForGivenKey (jsonArrayStr, "navn") hvor jsonArrayStr er vores eksempel JSON, vi får en Liste af alle navne som output:

[John, Gary, Selena]

5. Konklusion

I denne hurtige artikel lærte vi, hvordan man analyserer a JSONArray for at få alle de kortlagte værdier for en given nøgle. Her har vi brugt JSON-Java (org.json) bibliotek.

JSON.simple er endnu et lignende og effektivt alternativ til at arbejde med JSON i Java. Du er velkommen til at udforske.

Som sædvanlig er den komplette kildekode tilgængelig på Github.