读书人

有hibernate的实体类转化成JSON过滤无

发布时间: 2012-08-01 17:53:41 作者: rapoo

有hibernate的实体类转化成JSON过滤无关类型

在用JSONObject.fromObject的时候,如果JavaBean中有Set等类型时,会报错hibernate的lazy的错,所以需要过虑掉那些无关的类型。直接贴代码:

public class MagazineModel {
private int id;
private String name;
private int score;
private String descript;

private Set<PaperModel> papers;
private Set<MagazineModel> magazines;
private MagazineModel magazine;
get() set().....
}

要过滤掉papers magazines magazine


public static String modelBeanToJSON(final List<String> filterField, List<?> list){
JSONArray jsonObjects = new JSONArray();

int i=0;
Iterator<?> it = list.iterator();

while(it.hasNext()){
JSONObject jsonObject = new JSONObject();
Object obj = it.next();//这里的Obj对象只是list中的存放的对象类型

JsonConfig jsonConfig = new JsonConfig();

PropertyFilter filter = new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
boolean isFiltered=false;
for(String string:filterField){
if(string.equals(name)){
isFiltered=true;
}
}
if (isFiltered) {
return true;
}
return false;
}
};
jsonConfig.setJsonPropertyFilter(filter);

jsonObject=JSONObject.fromObject(obj, jsonConfig);
jsonObjects.add(i++, jsonObject);
}
return jsonObjects.toString();
}

调用示例:


List<MagazineModel> magas=paperService.findParentMagzines();//用hibernate 得到MagazineModel
List<String> strings=new ArrayList<>(); //设置要过滤的属性
strings.add("magazines");
strings.add("magazine");
strings.add("papers");

ConvertToJSON.modelBeanToJSON(strings, magas) //调用输出的结果是[{"descript":"","id":1,"name":"SCI","score":0},{"descript":"","id":2,"name":"EI","score":0}]



成功!


读书人网 >JavaScript

热点推荐