net.sf.json.JSONException: There is a cycle in the hierarchy!

最近在做一个博客类型的项目,做到用户收藏文章的时候。一个用户可以收藏多篇文章,一篇文章也可以被多个用户收藏,所以在数据库设计的时候,它们两个之间应该是多对多的映射关系。

设计好它们之间的多对多关系之后,前面已经实现的功能就会出现一些bug,比如将查询到的文章以json格式返回给前端时,就报了net.sf.json.JSONException: There is a cycle in the hierarchy!异常。

从字面意思上理解就是Json异常,层次结构中有一个循环,在我这个项目有里面,它的意思就是查询出文章artical封装成json时,由于artical里面有user,而user里面又有artical的意思。

解决办法:
最简单的解决办法就是,在转换成json格式的时候,过滤掉一些字段属性(也就是不对它进行转换处理),比如就可以过滤掉user里面的artical属性

		//返回Json数据
        //转换成json格式
        JsonConfig jsonConfig = new JsonConfig();
        //过滤掉articallike属性
        jsonConfig.setExcludes(new String[]{"articallike"});
        JSONObject jsonObject = JSONObject.fromObject(articalById,jsonConfig);

jsonConfig.setExcludes(new String[]{"articallike"});String数组里面可以写多个属性,表示将他们过滤掉

应用
这种方法还有一个应用就是,在查询出user之后,封装成json的时候必须要把password等重要的属性过滤掉,如果不进行过滤处理,这些敏感数据发送给前端,在浏览器的Network里面都是能到看到的。
总不能你关注了他,就可以知道他的密码了吧!!~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值