Ich möchte in meiner Java-Aktionsmethode über eine JSON-Zeichenfolge auf Eigenschaften zugreifen können. Die Zeichenfolge ist verfügbar, indem Sie einfach sagen myJsonString = object.getJson()
. Unten sehen Sie ein Beispiel dafür, wie die Zeichenfolge aussehen kann:
{
'title': 'ComputingandInformationsystems',
'id': 1,
'children': 'true',
'groups': [{
'title': 'LeveloneCIS',
'id': 2,
'children': 'true',
'groups': [{
'title': 'IntroToComputingandInternet',
'id': 3,
'children': 'false',
'groups': []
}]
}]
}
In dieser Zeichenfolge enthält jedes JSON-Objekt ein Array anderer JSON-Objekte. Es ist beabsichtigt, eine Liste von IDs zu extrahieren, bei denen ein bestimmtes Objekt eine Gruppeneigenschaft besitzt, die andere JSON-Objekte enthält. Ich habe Googles Gson als potenzielles JSON-Plugin angesehen. Kann jemand eine Anleitung geben, wie ich Java aus dieser JSON-Zeichenfolge generieren kann?
Antworten:
Google Gson unterstützt Generika und verschachtelte Beans. Das
[]
in JSON stellt ein Array dar und sollte einer Java-Sammlung wieList
oder nur einem einfachen Java-Array zugeordnet werden. Das{}
in JSON stellt ein Objekt dar und sollte einer Java-Map
oder nur einer JavaBean-Klasse zugeordnet werden.Sie haben ein JSON-Objekt mit mehreren Eigenschaften, von denen die
groups
Eigenschaft ein Array verschachtelter Objekte desselben Typs darstellt. Dies kann mit Gson folgendermaßen analysiert werden:Ziemlich einfach, nicht wahr? Habe einfach eine passende JavaBean und rufe auf
Gson#fromJson()
.Siehe auch:
quelle
Bewaaaaare von Gson! Es ist sehr cool, sehr gut, aber sobald Sie etwas anderes als einfache Objekte ausführen möchten, müssen Sie möglicherweise Ihre eigenen Serializer erstellen (was nicht so schwierig ist).
Wenn Sie ein Array von Objekten haben und etwas JSON in dieses Array von Objekten deserialisieren, sind die wahren Typen VERLOREN! Die vollständigen Objekte werden nicht einmal kopiert! Verwenden Sie XStream. Wenn Sie den jsondriver verwenden und die richtigen Einstellungen vornehmen, werden hässliche Typen in den tatsächlichen json codiert, sodass Sie nichts verlieren. Ein kleiner Preis (hässlicher JSON) für echte Serialisierung.
Beachten Sie, dass Jackson diese Probleme behebt und schneller als GSON ist.
quelle
Seltsamerweise war GSON der einzige anständige JSON-Prozessor, der bisher erwähnt wurde.
Hier sind weitere gute Möglichkeiten:
EDIT (Aug / 2013):
Noch etwas zu beachten:
quelle
Oder mit Jackson:
quelle
Wenn Sie sich durch eine Änderung in einer Anwendung befinden, die bereits http://restfb.com/ verwendet , können Sie Folgendes tun:
etc.
quelle
Einfach und arbeiten Java - Code konvertieren
JSONObject
zuJava Object
Employee.java
LoadFromJSON.java
quelle
quelle
Wenn Sie spezielle Karten mit Schlüsseln oder Werten verwenden, auch für spezielle Karten, werden Sie feststellen, dass dies bei der Implementierung von Google nicht berücksichtigt wird.
quelle
Was ist los mit dem Standardmaterial?
quelle
Probieren Sie es aus:
https://github.com/RichardHightower/boon
Es ist schnell böse:
https://github.com/RichardHightower/json-parsers-benchmark
Nehmen Sie nicht mein Wort dafür ... sehen Sie sich den Gatling-Benchmark an.
https://github.com/gatling/json-parsers-benchmark
(In einigen Fällen bis zu 4x und in den 100 Testjahren. Es gibt auch einen Index-Overlay-Modus, der noch schneller ist. Er ist jung, hat aber bereits einige Benutzer.)
Es kann JSON schneller in Karten und Listen analysieren als jede andere Bibliothek, die in ein JSON-DOM analysiert werden kann, und das ohne Index-Overlay-Modus. Mit dem Boon Index Overlay-Modus ist es sogar noch schneller.
Es hat auch einen sehr schnellen JSON-Lax-Modus und einen PLIST-Parser-Modus. :) (und hat einen super niedrigen Speicher, direkt aus dem Byte-Modus mit UTF-8-Codierung im laufenden Betrieb).
Es hat auch den schnellsten JSON-zu-JavaBean-Modus.
Es ist neu, aber wenn Sie nach Geschwindigkeit und einfacher API suchen, gibt es meiner Meinung nach keine schnellere oder minimalistischere API.
quelle
Erstellen Sie abhängig vom eingegebenen JSON-Format (Zeichenfolge / Datei) einen jSONString. Ein Beispiel für ein Nachrichtenklassenobjekt, das JSON entspricht, kann wie folgt abgerufen werden:
Nachricht msgFromJSON = neuer ObjectMapper (). ReadValue (jSONString, Message.class);
quelle
Am einfachsten ist es, wenn Sie diese softconvertvalue-Methode verwenden, eine benutzerdefinierte Methode, mit der Sie jsonData in Ihre spezifische Dto-Klasse konvertieren können.
quelle