将Argument添加到现有Json String

时间:2016-04-25 09:47:02

标签: json servlets arguments gson

我遇到这种情况:

更多servlet设置httpservletResponse content-type to json/application

我以这种方式输出我的json:

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

其中myObject是一个对象,上面的代码提供了创建一个字符串json,就像使用myObject结构一样。

现在我需要在json的顶部添加一个参数,因为我需要一个类似的参数:“result”:“okay”。

有没有办法在没有changinc myObject类的情况下添加它?

提前致谢。

1 个答案:

答案 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"}