2016-06-27 12 views
8

Für eine Java-Datenhandler, sende ich richtig formatiert JSON, aber eine Kombination aus Spring, Java, was zu tun, was es sieht, und Frameworks sollte ich nicht gehen ändern Mangle das JSON, damit ich es einmal in eine LinkedTreeMap verwandeln kann und ich es in ein JsonObject umwandeln muss. Dies ist nicht Serialisierung/Deserialisierung von JSON in Java-Objekte, es ist "endgültige Form" ist ein Gson JsonObject, und es muss buchstäblich jeden gültigen JSON behandeln können.Wie konvertiere ich eine LinkedTreeMap zu Gson JsonObject

{ 
"key":"value", 
"object": { 
    "array":[ 
     "value1", 
     "please work" 
     ] 
    } 
} 

ist die Probe I verwendet haben, wenn ich es sehe, es ist ein LinkedTreeMap dass .toString() s

{key=value, object={array=[value1, please work]}} 

wo Sie ersetzen können "=" mit ":", aber das hat nicht die internen Anführungszeichen für die Strategie für die Strategie.

Gibt es eine direktere Möglichkeit zum Konvertieren von LinkedTreeMap zu JsonObject, oder eine Bibliothek zum Hinzufügen der internen Anführungszeichen zu der Zeichenfolge, oder sogar eine Möglichkeit, ein Stachel in ein JsonObject zu verwandeln, das die internen Anführungszeichen nicht benötigt?

+0

Möglicherweise verwandte: http://stackoverflow.com/questions/22285661/gson-json-and- the-subtilties-of-linkedtreemap – Nivas

+0

verstehe ich nicht. Suchst du nach einem 'String'? Dann nur "toJson" in der "LinkedTreeMap" übergeben. –

+0

Ich suche nach einem JsonObject durch Hook oder Gauner, habe keine Möglichkeit gefunden, direkt von LinkedTreeMap zu JsonObject zu gehen, ich habe angefangen, die Manipulation von Strings zu betrachten, da es eine korrekte Möglichkeit gibt, eine Zeichenkette in JsonObject umzuwandeln . – Bronanaza

Antwort

24

Normalerweise müssten Sie das Objekt zu JSON serialisieren und dann das JSON-Objekt in eine JsonObject zurückversetzen. Glücklicherweise bietet Gson eine toJsonTree Methode, die die Analyse überspringt.

LinkedTreeMap<?,?> yourMap = ...; 
JsonObject jsonObject = gson.toJsonTree(yourMap).getAsJsonObject(); 

Beachten Sie, dass, wenn Sie können, deserialisieren nur die JSON direkt an einen JsonObject mit

gson.fromJson(theJson, JsonObject.class); 
Verwandte Themen