前端之家收集整理的这篇文章主要介绍了
net.sf.json中修改和过滤已生成的json数据的简单讲解,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
// 查询所有父类板块
public String findAllFatherBoard() throws IOException {
// 接收查询的结果集
List<ForumBoard> boardList = boardDAO
.get("from ForumBoard fb where fb.forumBoard=null and fb.boardAuditing='true'");
// 判断是否存在数据
if (boardList != null && boardList.size() > 0) {
// 声明JsonConfig配置文件对象
JsonConfig jsonConfig = new JsonConfig();
// 设置循环检测策略
jsonConfig
.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
// json字段重命名
// java--->json修改字段名字的时候使用jsonConfig.registerJsonPropertyNameProcessor(target,// propertyNameProcessor);
// json--->java的时候使用jsonConfig.registerJavaPropertyNameProcessor(target,// propertyNameProcessor);
jsonConfig.registerJsonPropertyNameProcessor(ForumBoard.class,// 创建内部类修改字段名字的一个接口
new PropertyNameProcessor() {
@Override
public String processPropertyName(Class obj,String name) {
// 将javaben中的指定字段修改名字,if (name.equalsIgnoreCase("boardId")) {
return "id";
} else if (name.equalsIgnoreCase("boardCountPt")) {
return "countPost";
} else if (name.equalsIgnoreCase("boardTitle")) {
return "text";
} else if (name.equalsIgnoreCase("forumBoards")) {
return "children";
} else if (name.equalsIgnoreCase("boardSeeNb")) {
return "countSee";
} else if (name.equalsIgnoreCase("forumBoard")) {
return "fatherBoard";
}
// System.out.println("==========" + name);
return "other";
}
});
// 设置json的属性的过滤器
// 创建属性过滤器的内部内部对象
jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
// 重写内部的允许字段通过的方法
public boolean apply(Object source,String name,Object value) {
// 排除的字段名字(属性名)
if (name.equals("forumPosts") || name.equals("forumUser")
|| name.equals("id") || name.equals("boardCreatTm")
|| name.equals("boardAuditing")) {
return true;
} else {
return false;
}
}
});
// jsonConfig.setRootClass(ForumBoard.class);
// 将对象转换成json数据
// 创建jsonArray数组的jso对象,并读取配置对象
try {
// 将目标对象和json配置对象一起读入JSONArray.fromObject(boardList,// jsonConfig);
// 这样就可以获取想要的数据的json格式的数据了
JSONArray jsonArray = JSONArray.fromObject(boardList,jsonConfig);
System.out.print(jsonArray.toString());
// 存入域中
HttpServletResponse response = ServletActionContext
.getResponse();
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println(jsonArray.toString());
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
} else {
message = "NOFIND";
}
return "FINDALLBOARD";
}