FastJSON循环引用问题

CXYGZL小哥 2015-01-03 12:54:05
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.htmlparser.util.ParserException;

/**
* Created by Vincent on 2014/12/18.
*/
public class Demo {
public static void main(String[] args) throws ParserException {
Demo1 demo1 = new Demo1();
Demo2 demo2 = new Demo2();
demo1.setDemo2(demo2);
demo1.setId(1);
demo2.setId(1);
demo2.setDemo1(demo1);
System.out.println(JSON.toJSONString(demo2, SerializerFeature.DisableCircularReferenceDetect));

}
}
class Demo1{
private int id;
private Demo2 demo2;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public Demo2 getDemo2() {
return demo2;
}

public void setDemo2(Demo2 demo2) {
this.demo2 = demo2;
}
}
class Demo2{
private int id;
private Demo1 demo1;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public Demo1 getDemo1() {
return demo1;
}

public void setDemo1(Demo1 demo1) {
this.demo1 = demo1;
}
}


在这个例子中,有循环引用的问题,按照网上查找的资料使用的,出现了
java.lang.StackOverflowError
异常,各位大师帮忙看看怎么破啊
...全文
347 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wkkevin_k 2016-02-01
  • 打赏
  • 举报
回复
我也遇到这个问题!楼主解决了没?
sunbo624 2015-01-05
  • 打赏
  • 举报
回复
引用 2 楼 u012880745 的回复:
[quote=引用 1 楼 sunbo624 的回复:] SerializerFeature.DisableCircularReferenceDetect 把这个参数去掉
去掉之后就有$ref引用的问题[/quote] 那是自然的 因为你的这个属性有值 而不是null 所以key中一定是包含这个属性的 但是它是个死链 所以fastjson自动变成一个假引用 这样就能保证不递归 它是生成了 但是你可以不用啊
sunbo624 2015-01-04
  • 打赏
  • 举报
回复
SerializerFeature.DisableCircularReferenceDetect 把这个参数去掉
CXYGZL小哥 2015-01-04
  • 打赏
  • 举报
回复
引用 1 楼 sunbo624 的回复:
SerializerFeature.DisableCircularReferenceDetect 把这个参数去掉
去掉之后就有$ref引用的问题

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧