Was ist der beste Weg, um einen JSON-Code wie folgt zu konvertieren:
{
"data" :
{
"field1" : "value1",
"field2" : "value2"
}
}
in einer Java Map, in der einer der Schlüssel (Feld1, Feld2) und die Werte für diese Felder (Wert1, Wert2) sind.
Irgendwelche Ideen? Soll ich dafür Json-lib verwenden? Oder besser, wenn ich meinen eigenen Parser schreibe?
java
json
parsing
collections
David Santamaria
quelle
quelle
Antworten:
Ich hoffe, Sie haben Witze darüber gemacht, Ihren eigenen Parser zu schreiben. :-)
Für eine so einfache Zuordnung würden die meisten Tools von http://json.org (Abschnitt Java) funktionieren. Für einen von ihnen (Jackson https://github.com/FasterXML/jackson-databind/#5-minute-tutorial-streaming-parser-generator ) würden Sie Folgendes tun:
(wobei JSON_SOURCE eine Datei, ein Eingabestream, ein Reader oder eine JSON-Inhaltszeichenfolge ist)
quelle
Map<String,Object> result = mapper.readValue(source, Map.class)
.Verwenden der GSON-Bibliothek:
Verwenden Sie den folgenden Code:
quelle
TypeToken<Map<String, Map>>
:-)Ich mag Google Gson Bibliothek.
Wenn Sie die Struktur von json nicht kennen. Sie können verwenden
und dann können Sie mit json arbeiten. zB wie man "value1" von seinem gson bekommt:
quelle
Verwenden Sie JSON lib zB http://www.json.org/java/
quelle
Mein Beitrag könnte für andere hilfreich sein. Stellen Sie sich also vor, Sie haben eine Karte mit einem bestimmten Objekt in Werten, etwa so:
Das Parsen dieser JSON-Datei mit der GSON-Bibliothek ist einfach: Wenn Ihr Projekt mavenisiert ist
Dann benutze dieses Snippet:
Das entsprechende POJO sollte ungefähr so aussehen:
Ich hoffe es hilft !
quelle
Auf diese Weise funktioniert es wie eine Karte ...
quelle
JsonMap implements Map<String,Object
um JSONObject zu verpacken. dann erhalten Sie die wahreMap
Schnittstelle.Ich mache es so. Es ist einfach.
quelle
quelle
Die JsonTools-Bibliothek ist sehr vollständig. Es kann bei Github gefunden werden .
quelle
Mit Googles Gson 2.7 (wahrscheinlich auch frühere Versionen, aber ich habe 2.7 getestet) ist es so einfach wie:
Dies gibt eine Map vom Typ zurück
class com.google.gson.internal.LinkedTreeMap
und funktioniert rekursiv für verschachtelte Objekte.quelle
Eine weitere Alternative ist json-simple, die in Maven Central zu finden ist :
Das Artefakt ist 24 KB groß und hat keine anderen Laufzeitabhängigkeiten.
quelle
null
von einer einfachen JSON-Zeichenfolge zurück, bei der einer der Werte ein Array von Zeichenfolgen ist.Wenn Sie org.json verwenden, verfügt JSONObject über eine Methode
toMap()
. Sie können leicht tun:quelle
quelle
Die Unterstreichungs-Java- Bibliothek kann JSON-Zeichenfolgen in Hash-Maps konvertieren. Ich bin der Betreuer des Projekts.
Codebeispiel:
quelle
Wenn Sie reines Java ohne Abhängigkeiten benötigen, können Sie die eingebaute Nashorn-API von Java 8 verwenden. Sie ist in Java 11 veraltet.
Das funktioniert bei mir:
Beispielnutzung
JSON:
Code:
quelle
JSON to Map wird immer ein String- / Objektdatentyp sein. Ich habe GSON Lib von Google.
funktioniert sehr gut und JDK 1.5 ist die Mindestanforderung.
quelle