WEB开发中经常要用到JSON数据形式,如何把一个类转换成一个JSON数据形式是经常会遇到的问题。特别见到的例子是前台数据的展现要用到JSON数据形式。这里将如何把一个来转换成JSON数据形式。常用到json-lib.jar包中的JsonConfig类、JSONArray和JSONObject。当然我们可以进一步对这些进行封装到达更好的效果
这里有一个
JsonConfig经常是起到一个过滤器的作用,像我们不想把某个对象的属性生成到JSON对象里面去就可以使用这个类,具体有两种方法,简单的是
public class TreeVo implements java.io.Serializable { /** * */ private static final long serialVersionUID = 1L; private String id; private String text; private Set<TreeVo> children; private String state; 生成get和set方法
第一:
JsonConfig config = new JsonConfig();
config.setExcludes(new String[]{"children"});
第二:
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setJsonPropertyFilter( new PropertyFilter(){
public boolean apply(Object source/* 属性的拥有者 */, String name /*属性名字*/, Object value/* 属性值 */ ){
// return true to skip name
return source instanceof TreeVo && name.equals("children");
}
});
这样都可以过滤掉TreeVo对象中children的值。过滤了后的输出:[{"id":"0","state":"","text":"跟菜单"}]
没过滤的输出:[{"children":[{"children":[],"id":"1","state":"","text":"一级菜单一"}],"id":"0","state":"","text":"跟菜单"}]
JSONArray顾名思义即把java对象转换成JSON数组形式,即像上面的形式,最外层用[]括起来。而JSONObject则是吧java对象转换成JSON对象形式,最外层用{}括起来,像这种类型:{"id":"0","state":"","text":"跟菜单"}。
后台生成以上两种格式后,JS前台就可以用eval函数生成JSON对象
var ojb = eval('('+'{"id":"0","state":"","text":"跟菜单"}'+')'); alert(ojb); var arr = eval('('+'[{"id":"0","state":"","text":"跟菜单"}]'+')'); alert(arr[0].id);
附件中为json的jar包和json的源码包和json的API