Verkrijg een waarde per sleutel in een JSONArray

1. Overzicht

JSON is een lichtgewicht en taalonafhankelijk gegevensuitwisselingsformaat dat wordt gebruikt voor de meeste client-servercommunicatie.

JSONObject en JSONArray zijn de twee algemene klassen die gewoonlijk beschikbaar zijn in de meeste JSON-verwerkingsbibliotheken. EEN JSONObject slaat ongeordende sleutel / waarde-paren op, net als een Java Kaart implementatie. EEN JSONArray, aan de andere kant, is een geordende reeks waarden net als een Lijst of een Vector in Java.

In deze tutorial gebruiken we JSON-Java (org.json) bibliotheek en leer hoe u een JSONArray om waarde voor een bepaalde sleutel te extraheren. Indien nodig hebben we een inleiding tot deze bibliotheek beschikbaar.

2. Maven Afhankelijkheid

We beginnen met het toevoegen van de onderstaande afhankelijkheid in onze POM:

 org.json json 20180813 

We kunnen altijd de laatste versie van JSON-Java op Maven Central.

3. Contextopbouw

Een JSON-bericht bestaat meestal uit JSON-objecten en arrays die in elkaar kunnen zijn genest. EEN JSONArray object staat tussen vierkante haken [ ] terwijl a JSONObject staat tussen accolades {}. Laten we bijvoorbeeld eens kijken naar dit JSON-bericht:

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

Het is duidelijk dat het een reeks JSON-objecten is. Elk JSON-object in deze array vertegenwoordigt ons klantrecord met een naam, leeftijd, en stad als attributen of sleutels.

4. Verwerking JSONArray

Gezien de bovenstaande JSON, wat als we de namen van al onze klanten willen weten? Met andere woorden, gegeven een sleutel, "naam" hoe kunnen we in ons voorbeeld alle waarden vinden die aan die sleutel zijn toegewezen in een bepaalde JSON-array?

Zoals we weten, a JSONArray is een lijst met JSON-objecten. Laten we dus alle waarden voor een bepaalde sleutel zoeken:

openbare lijst getValuesForGivenKey (String jsonArrayStr, String-sleutel) {JSONArray jsonArray = nieuwe JSONArray (jsonArrayStr); retourneer IntStream.range (0, jsonArray.length ()) .mapToObj (index -> ((JSONObject) jsonArray.get (index)). optString (sleutel)) .collect (Collectors.toList ()); }

In het vorige voorbeeld:

  • Ten eerste doorlopen we de volledige lijst met objecten in een JSON-array
  • Dan voor elk JSONObject, krijgen we de waarde toegewezen aan de gegeven sleutel

Ook de methode optString () geeft een lege tekenreeks terug als zo'n sleutel niet bestaat.

Bij het aanroepen getValuesForGivenKey (jsonArrayStr, "naam") waar jsonArrayStr is ons voorbeeld-JSON, we krijgen een Lijst van alle namen als de uitvoer:

[John, Gary, Selena]

5. Conclusie

In dit korte artikel hebben we geleerd hoe u een JSONArray om alle toegewezen waarden voor een bepaalde sleutel op te halen. Hier hebben we gebruikt JSON-Java (org.json) bibliotheek.

JSON.simple is nog een ander vergelijkbaar en krachtig alternatief voor het werken met JSON in Java. Voel je vrij om te verkennen.

Zoals gewoonlijk is de volledige broncode beschikbaar op Github.


$config[zx-auto] not found$config[zx-overlay] not found