我遇到这种情况:
更多servlet设置httpservletResponse content-type to json/application
。
我以这种方式输出我的json:
out.write (new Gson().toJson(myObject));
其中myObject是一个对象,上面的代码提供了创建一个字符串json,就像使用myObject结构一样。
现在我需要在json的顶部添加一个参数,因为我需要一个类似的参数:“result”:“okay”。
有没有办法在没有changinc myObject类的情况下添加它?
提前致谢。
答案 0 :(得分:0)
是。而不是使用String
构建Gson#toJson()
使用Gson#toJsonTree()
来解析对象,但使用JsonElement
子类创建JSON内部表示。您需要将其强制转换为JsonObject
,然后添加新属性,最后将其写入输出流。
代码示例:
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);
}
}
输出:
json = {"a":1,"b":"salut","result":"okay"}