对date类型直接转化:
1.java.util.Date testDate = new Date();
2.JSONObject jsonFromDate = JSONObject.fromObject(testDate);
3.System.out.println(jsonFromDate);
4.//prints {"date":26,"day":1,"hours":11,"minutes":30,"month":9,"seconds":18,"time":1256527818296,"timezoneOffset":-480,"year":109}
上述转化后的格式明显不利于我们使用,下面介绍我的方法
1.//注册date类型的转化方式
2. JsonConfig jsonConfig = new JsonConfig();
3. jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessorImpl());
4.
5.JSONObject jsonFromBean = JSONObject.fromObject(testBean,jsonConfig);
6.System.out.println(jsonFromBean);
7.
8.//prints {"birthday":"2009-10-26","id":"id","name":"name"}
9.
10.String[] dateFormats = new String[] {"yyyy/MM/dd","yyyy-MM-dd"};
11.JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
12.TestBean jsonToBean = (TestBean)JSONObject.toBean(jsonFromBean,TestBean.class);
13.System.out.println(jsonToBean);
14.//prints TestBean@1126b07[id=id,name=name,birthday=Mon Oct 26 00:00:00 CST 2009]
其中需要的类如下:
import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
public class JsonValueProcessorImpl implements JsonValueProcessor{
private final String format="yyyy-MM-dd HH:mm:ss";
public Object processArrayValue(Object arg0, JsonConfig arg1) {
// TODO Auto-generated method stub
return null;
}
public Object processObjectValue(String key, Object value,JsonConfig arg2) {
if(value==null)
return "";
if (value instanceof Date) {
String str = new SimpleDateFormat(format).format((Date) value);
return str;
}
return value.toString();
}
}