JSON
gson
FastJson
循环引用的问题
如果往一个 List 里多次添加了同一对象,在 JSON.toJSONString
时默认会被转换成这样:
[
{
"k1": "v1",
"k2": []
},
{"$ref": "$.paras[0]"},
{"$ref": "$.paras[0]"},
{"$ref": "$.paras[0]"},
{"$ref": "$.paras[0]"},
{"$ref": "$.paras[0]"},
{"$ref": "$.paras[0]"},
{"$ref": "$.paras[0]"},
{"$ref": "$.paras[0]"},
{"$ref": "$.paras[0]"},
{"$ref": "$.paras[0]"},
{"$ref": "$.paras[0]"},
{"$ref": "$.paras[0]"}
]
我这里因为是误操作才往 List 里多次添加的,所以解决误操作就好了。
至于确实是真实意图的情况(可能一般前端才有?),可以参考 http://blog.csdn.net/Singleton1900/article/details/50435247 解决。
boolean 的序列化字段命名
public class Test {
private boolean isTest;
public boolean isTest() {
return isTest;
}
public void setTest(boolean isTest) {
this.isTest = isTest;
}
}
这个类的对象在使用 JSON.toJSONString
方法时,isTest
字段名被改为了 test
。
有几种方法可以解决:
将字段名改为 test(符合 Java Bean)
为字段名加上注解,标示它序列化的名字为
isTest
使用 Gson
FastJson 项目里相关的讨论 Issue 如下: