使用JSON-LIB转换JAVA对象
???? 使用JSON-LIB可以极大的简化JAVA对象转换成JSON对象所需进行的操作,更可以避免人工操作生成JSON对象字符串时带来的麻烦和误操作:
使用JSON-LIB,首先需要有几个支持的包:
http://json-lib.sourceforge.net下载json-lib-1.1-jdk15.jar
commons-lang.jar、commons-logging.jar,commons-beanutils.jar? 这些包可在tomcat/comon/lib下找到
EZMorph 下载地址http://ezmorph.sourceforge.net
morph-1.0.1 下载地址:http://morph.sourceforge.net
使用的例子如下所示:
?
其它两个测试实体Bean:
JsonConfig cfg=new JsonConfig();cfg.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessorImpl());cfg.registerJsonValueProcessor(java.sql.Date.class, new JsonValueProcessorImpl());JSONObject obj = JSONObject.fromObject(info,cfg);JsonValueProcessorImpl为实现了源代码中的接口JsonValueProcessorimport java.text.SimpleDateFormat;import java.util.Date;import net.sf.json.JsonConfig;import net.sf.json.processors.JsonValueProcessor;public class JsonValueProcessorImpl implements JsonValueProcessor{ private String format="yyyy-MM-dd"; public JsonValueProcessorImpl(){ } public JsonValueProcessorImpl(String format){ this.format=format; } public Object processArrayValue(Object value, JsonConfig jsonConfig) { String[] obj={}; if(value instanceof Date[]){ SimpleDateFormat sf=new SimpleDateFormat(format); Date[] dates=(Date[])value; obj =new String[dates.length]; for (int i = 0; i < dates.length; i++) { obj[i]=sf.format(dates[i]); } } return obj; } public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) { if(value instanceof Date){ String str=new SimpleDateFormat(format).format((Date)value); return str; } return value.toString(); } public String getFormat() { return format; } public void setFormat(String format) { this.format = format; } }??
本文也只是实现了将DATE类型转换成yyyy-MM-dd的格式,各位可以自己测试一下。