GSON:如何将Object(它本身包含JSON)转换为JSON

时间:2014-07-12 14:03:37

标签: java gson

我有一个不同的用例,POJO中的字段本身存储JSON数据,基本上是对所有数据进行分组。

现在我想要从上面的POJO生成完整的JSON。

目前我正在使用这种方法

private static Gson gson = new Gson();
public static String convertObjectToJSON(Object object) throws Exception {
    String jsonResponse = gson.toJson(object);
    return jsonResponse;
}

但是使用双引号(如下面的

)获取带有转义字符的输出
 { \"_id\" : 234242, \"name\" : \"carlos\"}

我在GsonBuilder中尝试了各种选项,但没有用。 基本上,我只是将多个JSON数据分组并发送给它。

请你帮忙摆脱双引号周围的转义字符。

更新

问题是:我有3个JSON,需要将它们组合成一个JSON,需要通过Spring MVC将它传递给html5客户端。截至目前,我将3个JSON添加到POJO并尝试将其转换为JSON。同样如上所述。

谢谢&此致

Venkat

1 个答案:

答案 0 :(得分:0)

我试过下面的示例代码,并且它没有双引号周围的任何转义字符。

class MyPOJO{
    private int _id;
    private String name;
    // getter & setter
}

String json="{ \"_id\" : 234242, \"name\" : \"carlos\"}";
MyPOJOobj=new Gson().fromJson(json, MyPOJO.class);
System.out.println(new Gson().toJson(obj));

输出:

{"_id":234242,"name":"carlos"}

修改

如果你想组合3个JSON字符串,那么它将被存储为对象列表,如下所示:

示例代码:

String json = "[" +
                    " { \"_id\" : 1, \"name\" : \"A\"}," +
                    " { \"_id\" : 2, \"name\" : \"B\"}," +
                    " { \"_id\" : 3, \"name\" : \"C\"}" +
                "]";
Type type = new TypeToken<ArrayList<MyPOJO>>() {}.getType();
ArrayList<MyPOJO> obj = new Gson().fromJson(json, type);
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(obj));

输出:

[
  {
    "_id": 1,
    "name": "A"
  },
  {
    "_id": 2,
    "name": "B"
  },
  {
    "_id": 3,
    "name": "C"
  }
]