最近在做一个前后端分离的项目,所有的数据都要用json输出到前台,解决完跨域问题后,数据的输出又是一个问题。因为里面所有的实体类都有外键,这样都会出现net.sf.json.JSONException: There is a cycle in the hierarchy 这样的错误。
开始时候是创建数据量比较小,创建的是VO类,把要输入到前端页面的数据创建一个VO类,然后再转json输出到前端。但是这样重复的工作量比较大,而且创建的VO类在前端页面修改更换数据后,会很麻烦。
后来用 JsonConfig 来忽略掉这个属性,示例如下:
下面再逐一解释:
JsonConfig jsonConfig = new JsonConfig(); //建立配置文件 jsonConfig.setIgnoreDefaultExcludes(false); //设置默认忽略
//jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); //这个据说是可以控制转json时候对象循环的层数,试了没什么用,不知道是不是我的方法或方式不对
jsonConfig.setExcludes(new String[] {"user","toUser"}); //忽略的字段
里面写的是一个String数组,可以写多个字段,我这个里面有两个字段需要忽略:user,toUser
把要转json的对象里面包含的外键对象忽略,这