Wie konvertiert anzeigen von JSON-Objekten in JSON mit GSON in Java?
Ich habe eine Karte von JSON-Objekten wie folgt:
Map<String,Object> map = HashMap<String,Object>();
map.put("first_name", "prod");
JSONObject jsonObj = new JSONObject("some complex json string here");
map.put("data", jsonObj);
Gson gson = new Gson();
String result = gson.toJson(map);
Nun, wenn die "einige komplexe JSON-string hier" war:
{"sender":{"id":"test test"},"recipients":{"id":"test1 test1"} }
und führen Sie obigen code gibt mir so etwas wie:
{
"first_name": "prod",
"data": {
"map": {
"sender": {
"map": {
"id": "test test"
}
}
},
"recipients": {
"map": {
"id": "test1 test1"
}
}
}
}
}
Ich hätte einige syntax-Fehler da oben, aber im Grunde weiß ich nicht warum ich sehe Objekte gewickelt map
's.
Update
laut Kommentaren, ist es eine schlechte Idee ist ein mix aus unterschiedlichen json-Parser.
das kann ich verstehen. aber mein Fall erfordert den Aufruf einer externen api, die eine hash-map-Objekten deserialisiert mit gson schließlich.
ist es wie jedes andere Objekt neben JSONObject, dass ich hinzufügen kann zu der Karte und haben noch gson erstellen json aus der es ohne zusätzliche " map " - Struktur? ich verstehe, dass ich java beans und erreichen diese. aber ich bin auf der Suche nach einem einfacheren Weg, da meine Datenstruktur sehr Komplex sein kann.
Update2
geht einen Schritt zurück, ich bin da ein xml-string. und ich habe Sie konvertiert json-Objekt.
jetzt habe ich eine externe api, die eine Karte, die wiederum umgewandelt wird, um json-string mittels gson im externen service.
so, ich bin da eine xml-Datenstruktur, aber ich muss pass eine map, die Funktion. die Möglichkeit habe ich oben beschrieben erzeugt zusätzliche "Karte" - Strukturen werden bei der Konvertierung nach json string mittels gson. ich habe nicht die Kontrolle zu ändern, wie der externe Dienst verhält (z.B. mittels gson zu konvertieren, anzeigen).
Müsstest du uns ein Beispiel geben von der
HashMap
Inhalte und das, was Sie wollen, um es hinzuzufügen. Es ist nicht klar genau, was Sie wollen.ich bin versuchen, um eine hashmap, die umgewandelt werden können, um json-Strings, der später mit gson. aber für meinen Bedarf, brauche ich, um zu erstellen, anzeigen, und nicht den json-string. ich brauche nur zu wissen, dass diese Karte "kann" umgewandelt werden, um json-string mittels gson mit extra " Karte
InformationsquelleAutor Prod Tester | 2014-01-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mischen von Klassen aus zwei verschiedenen JSON-Bibliotheken, die am Ende in nichts als Tränen. Und das ist Ihr Problem;
JSONObject
ist nicht Teil der Gson. Zusätzlich versuchen zu mischen Java-Datenstrukturen mit einer Bibliothek parse-Baum-Darstellungen ist auch eine schlechte Idee; konzeptuell ein Objekt im JSON - ist eine Karte.Wenn du gehst zu verwenden, Gson, entweder alle Java-Objekte und lassen Gson konvertieren Sie Sie, oder verwenden Sie die Klassen aus Gson:
Wieder, dann verwenden Java-Klassen, nicht parse-Baum die Klassen des parsers. Es ist unklar, was du bist jetzt gefragt, da die oben erzeugt genau, was Sie sagte, Sie wollte.
Um klar zu sein: Sie arbeiten entweder mit der parse-Baum von Objekten und erzeugen von JSON aus dem Baum, oder arbeiten Sie mit Java-Klassen und haben Gson zu serialisieren zu JSON. Sie können ganz einfach erzeugen ein
JsonElement
aus jedemMap
mitGson.toJsonTree()
ich bin versuchen, um eine hashmap (konvertiert werden können json-string mittels gson von einigen anderen externen Prozess). also grundsätzlich will ich schaffen, wie eine hashmap, und nicht eine andere Datenstruktur.
InformationsquelleAutor Brian Roach
Dies hat zu tun mit der internen Implementierung der
JSONObject
. Die Klasse selbst hat ein Instanz-Feldjava.util.Map
mit dem Namenmap
.Beim analysieren des
String
mit
JSONObject
haben, haben Sie eigentlich 1 rootJSONObject
zwei verschachtelteJSONObject
s, einer mit Namensender
und einer mit Namenrecipients
.Die Hierarchie ist im Grunde wie so
Gson serialisiert, Ihre Objekte durch Zuordnung jedes Feld Wert den Namen des Feldes.
InformationsquelleAutor Sotirios Delimanolis
Ich hatte ein ähnliches problem und ich habe es endlich gelöst mit json-simple.
InformationsquelleAutor dlao
Können Sie versuchen, die standard-Implementierung des Java-API für JSON processing die Teil der J2EE.
Die Ausgabe sollte sein:
InformationsquelleAutor user2845946