最近在做一个博客类型的项目,做到用户收藏文章的时候。一个用户可以收藏多篇文章,一篇文章也可以被多个用户收藏,所以在数据库设计的时候,它们两个之间应该是多对多的映射关系。
设计好它们之间的多对多关系之后,前面已经实现的功能就会出现一些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
里面都是能到看到的。
总不能你关注了他,就可以知道他的密码了吧!!~~