【发布时间】:2012-02-11 04:09:50
【问题描述】:
我正在 com.google.gson.JsonObject 上编写一个小的流利的包装器。
当我序列化我的 Json 时,我得到:
{"key1":"value1","key2":"value2","key3":"{\"innerKey\":\"value3\"}"}
如何去掉多余的引号?
我的代码:
public class JsonBuilder {
private final JsonObject json = new JsonObject();
private final Map<String, JsonBuilder> children = newHashMap();
public String toJson() {
for (Map.Entry<String, JsonBuilder> entry : children.entrySet()) {
String value = entry.getValue().toJson();
add(entry.getKey(), value);
}
children.clear();
return json.toString();
}
public JsonBuilder add(String key, String value) {
json.addProperty(key, value);
return this;
}
public JsonBuilder add(String key, JsonBuilder value) {
Preconditions.checkArgument(!children.containsKey(key));
children.put(key, value);
return this;
}
}
String json = new JsonBuilder()
.add("key1", "value1")
.add("key2", "value2")
.add("key3", new JsonBuilder()
.add("innerKey", "value3"))
.toJson();
【问题讨论】:
-
那是json语法,我认为没有办法禁用它。删除它们的任何具体原因?
-
Underscore-java 库有 U.objectBuilder() 和 U.arrayBuilder() 方法。