日期:2014-05-16  浏览次数:20298 次

JSON数据形式工具类

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