net.sf.json.JSONException: There is a cycle in the hierarchy! 错误产生的原因!

第一次遇到这个错误,那时候刚接触JSONArray、JSONObject、JsonConfig。

百度解决方法,只知道使用JsonConfig将实体类中的关联实体过滤掉就行了,只是暂时解决了这个错误,深层的东西并不知道。

这次又遇到这个错误,实体类中有两个关联实体,发现有一个关联实体必须使用JsonConfig过滤掉,否则的话就报错。而另一个不过滤掉,也不会报错。

仔细查看后:

我正在使用的实体类关联了A和E。

必须过滤掉的这个关联实体A---A关联了B---B关联了C---C关联D---D又关联了C,将D中关联的C注释掉后发现,就算不用JsonConfig过滤掉A也不会报错了。

而不必过滤掉的这个实体E相比较A就比较简单了,没有出现相互关联的情况。

========================================================================================

解决问题的时候,http://www.blogjava.net/peiliangye/articles/372062.html 这篇文章的帮助很大,谢谢作者的分享!


虽然说如果没有相互关联的时候,不使用JsonConfig过滤也不会出错,但是如果关联关系比较复杂的时候,返回的JSONArray太复杂了,会返回好多我们也许用不到的,

还是过滤掉比较好,如果需要关联实体的属性,可以通过在实体类中添加如下代码来取。

private String goods_name;

@Transient
public String getGoods_name() {
if (goods_id != null) {
return goods_id.getGoodsName();
}
return "";
}
public void setGoods_name(String goods_name) {
this.goods_name = goods_name;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值