Erhalte einen Wert per Key in einem JSONArray

Holen Sie sich einen Wert durch Schlüssel in einem JSONArray

1. Überblick

JSON ist ein leichtgewichtiges und sprachunabhängiges Datenaustauschformat, das für die meisten Client-Server-Kommunikationen verwendet wird.

JSONObject undJSONArray sind die beiden allgemeinen Klassen, die normalerweise in den meisten JSON-Verarbeitungsbibliotheken verfügbar sind. A JSONObject stores unordered key-value pairs, ähnlich wie bei einer JavaMap-Implementierung. A JSONArray, on the other hand, is an ordered sequence of values ähnelt einemList oder einemVector in Java.

In diesem Lernprogramm verwenden wir die BibliothekJSON-Java (org.json) und lernen, wie SieJSONArray verarbeiten, um den Wert für einen bestimmten Schlüssel zu extrahieren. Bei Bedarf stehen dieser Bibliothekan introduction zur Verfügung.

2. Maven-Abhängigkeit

Zunächst fügen wir die folgende Abhängigkeit in unser POM ein:


    org.json
    json
    20180813

Wir können immer die neueste Version vonJSON-Java aufMaven Central herausfinden.

3. Kontextaufbau

Eine JSON-Nachricht besteht normalerweise aus JSON-Objekten und Arrays, die ineinander verschachtelt sein können. EinJSONArray-Objekt ist in eckigen Klammern[ ] eingeschlossen, während einJSONObject in geschweiften Klammern\{} eingeschlossen ist. Betrachten wir zum Beispiel diese JSON-Nachricht:

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

Es handelt sich eindeutig um ein Array von JSON-Objekten. Jedes JSON-Objekt in diesem Array repräsentiert unseren Kundendatensatz mita name, age, undcity als Attributen oder Schlüsseln.

4. Verarbeitung vonJSONArray

Was, wenn wir in Anbetracht des obigen JSON die Namen aller unserer Kunden herausfinden möchten? Mit anderen Worten, wie können wir bei einem gegebenen Schlüssel,“name” in unserem Beispiel, alle Werte finden, die diesem Schlüssel in einem gegebenen JSON-Array zugeordnet sind?

Wie wir wissen, ist aJSONArray eine Liste von JSON-Objekten. Lassen Sie uns also alle Werte für einen bestimmten Schlüssel finden:

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

Im vorherigen Beispiel:

  • Zunächst durchlaufen wir die gesamte Liste der Objekte in einem JSON-Array

  • Dann erhalten wir für jedesJSONObject den Wert, der dem angegebenen Schlüssel zugeordnet ist

Außerdem gibt die MethodeoptString() eine leere Zeichenfolge zurück, wenn kein solcher Schlüssel vorhanden ist.

Beim Aufrufen vongetValuesForGivenKey(jsonArrayStr, “name”), wobeijsonArrayStr unser Beispiel-JSON ist, erhalten wirList aller Namen als Ausgabe:

[John, Gary, Selena]

5. Fazit

In diesem kurzen Artikel haben wir gelernt, wie manJSONArray analysiert, um alle zugeordneten Werte für einen bestimmten Schlüssel zu erhalten. Hier haben wir die Bibliothek vonJSON-Java (org.json)verwendet.

JSON.simple ist eine weitere ähnliche und leistungsstarke Alternative für die Arbeit mit JSON in Java. Bitte zögern Sie nicht zu erkunden.

Wie üblich ist der vollständige Quellcodeover on Github. verfügbar