2016-04-25 4 views
0

Ich habe diese Situation:hinzufügen Argument an bestehende Json String

Mehr Servlets stellen Sie den HttpServletResponse content-type to json/application.

I-Ausgang meine Json auf diese Weise:

out.write (new Gson().toJson(myObject)); 

wo myObject, ein Objekt ist, und der Code über ein String json Erstellen wie myObject Struktur.

Jetzt muss ich ein Argument auf der Oberseite des JSON hinzufügen, weil ich brauche ein Argument wie: "Ergebnis": "Okay".

Gibt es eine Möglichkeit, dies ohne changinc myObject-Klasse hinzuzufügen?

Vielen Dank im Voraus.

Antwort

0

Ja. Anstatt einen String mit Gson#toJson() zu erstellen, verwenden Sie Gson#toJsonTree(), der das Objekt analysiert, aber eine interne JSON-Repräsentation unter Verwendung von JsonElement Unterklassen erstellt. Sie müssen es in eine JsonObject umwandeln, dann die neue Eigenschaft hinzufügen und schließlich in den Ausgabestream schreiben.

Code-Beispiel:

package net.sargue.gson; 

import com.google.gson.Gson; 
import com.google.gson.JsonObject; 

public class SO36837061 { 
    public static class MyClass { 
    int a = 1; 
    String b = "salut"; 
    } 

    public static void main(String[] args) { 
    MyClass myObject = new MyClass(); 
    JsonObject jsonObject = (JsonObject) new Gson().toJsonTree(myObject); 
    jsonObject.addProperty("result", "okay"); 
    String json = new Gson().toJson(jsonObject); 
    System.out.println("json = " + json); 
    } 
} 

Ausgang:

json = {"a":1,"b":"salut","result":"okay"} 
+0

Hey Mann, danke! Ich habe es auf andere Weise gelöst, aber dieser Code ist, was ich brauchte, und ich werde ihn bald benutzen. Vielen Dank! – xcsob

Verwandte Themen