后台将集合处理成json
自己在做的一个项目遇到一个需求,需要将后台集合处理成json,方便前端处理,json包一般是nef.sj.json.
我直接采用
List<AppFiled> filedList=appactivity.getFiledList();//集合对象 JSONArray datalist = JSONArray.fromObject(filedList);
发现报错了,报错的标题是There is a cycle in the hierarchy!意思是出现死循环,我百度一下出错的原因在于实体类有别的对象,也就是上面的AppFiled内部还有对象,导致出现死循环,查看AppFiled结构发现在继承的DataEntity中包含Page对象,导致出现死循环
public class AppFiled extends DataEntity<AppFiled> implements JSONString { private static final long serialVersionUID = 1L; private String filedName; // 数据库字段名 private String labelName; // 显示名 private String type; // 文本类型 private String required; // 是否必填 private String sort; // 排序 private String activityId; //活动id
/** * 当前实体分页对象 */ protected Page<T> page; /** * 自定义SQL(SQL标识,SQL内容) */ protected Map<String, String> sqlMap;
处理的方法是使用JSONConfig
JsonConfig cfg = new JsonConfig(); cfg.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); //这句话好像会把对象下面所有其他对象过滤掉
还要在实体类AppFiled指定json格式,(实体类要实现JSONString接口)
....//getter和setter public String toJSONString() { return "{filedName:'"+filedName+"',labelName:'"+labelName+"',sort:'"+sort+"'}"; }
这样就可以将集合转为json方便前端处理了