如何使用字段之一转换为json对象是json字符串

时间:2015-01-14 13:07:56

标签: java gson

我有一个实体:

class A {
    String errors ;//  a json string of some type (type could vary).
    Double value;
    ...
    public A(String theErrors, Double theValue) {
      errors = theErrors;
      value=theValue;
    }
}

A a = new A("{tl:[\"err1\"]...}", 10d);

我需要将 a 转换为json字符串。

使用google gson库我可以使用:

String str = gson.toJson(a)

但是s.a. errors字段是一个String,它被转义,结果是:

  

// {"错误":" { tl:[" err1"] ... }" ,"价值":10}

不是

  

// {"错误": { tl:[" err1"] ... } ,&#34 ;价值":10}

至于现在我尝试类似的事情:

String str = gson.toJson(a).replace("\"{", "{").replace("}\"}", "}}")

但这是一个脆弱的解决方案。

有没有人知道,如果有更好的方法来解决这个问题?提前致谢。

PS:关键是底层错误对象的类型是未知的(它取决于错误的来源)

1 个答案:

答案 0 :(得分:0)

似乎我找到了解决方案:

String getAsJson(A a) {
    JsonObject jsonMedia = (JsonObject) g.toJsonTree(a);
    jsonMedia.add("errors", g.fromJson(a.getA(), JsonElement.class));
    return g.toJson(jsonMedia);
}