首先我使用的工具是json-lib
对于date类型的转化一直是json中比较复杂的事情,我这只提出一种自己会的方式与大家分享,如果还好更好的方式别忘记告诉我学习下嘿嘿在这先谢了
对于date类型直接转化如下
java.util.Date testDate = new Date();
JSONObject jsOnFromDate= JSONObject.fromObject(testDate);
System.out.println(jsonFromDate);
//prints {"date":26,"day":1,"hours":11,"minutes":30,"month":9,"seconds":18,"time":1256527818296,"timezoneOffset":-480,"year":109}
上述转化后的格式明显不利于我们使用,下面介绍我的方法
//注册date类型的转化方式
JsonConfig jsOnConfig= new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessorImplTest());
JSONObject jsOnFromBean= JSONObject.fromObject(testBean,jsonConfig);
System.out.println(jsonFromBean);
//prints {"birthday":"2009-10-26","id":"id","name":"name"}
String[] dateFormats = new String[] {"yyyy/MM/dd","yyyy-MM-dd"};
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
TestBean jsOnToBean= (TestBean)JSONObject.toBean(jsonFromBean,TestBean.class);
System.out.println(jsonToBean);
//prints TestBean@1126b07[id=id,name=name,birthday=Mon Oct 26 00:00:00 CST 2009]
其中需要的类如下:
1.准备测试数据
import java.util.Date;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
public class TestBean {
private String id;
private String name;
private java.util.Date birthday;
public TestBean() {
super();
}
public TestBean(String id, String name, Date birthday) {
super();
this.id = id;
this.name = name;
this.birthday = birthday;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public java.util.Date getBirthday() {
return birthday;
}
public void setBirthday(java.util.Date birthday) {
this.birthday = birthday;
}
public String toString() {
return ReflectionToStringBuilder.toString(this);
}
}
2.创建date格式化类
import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
public class JsonValueProcessorImplTest implements JsonValueProcessor {
private String format = "yyyy-MM-dd";
public JsonValueProcessorImplTest() {
super();
}
public JsonValueProcessorImplTest(String format) {
super();
this.format = format;
}
@Override
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 obj[i] = sf.format(dates[i]);
}
}
return obj;
}
@Override
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
if (value instanceof java.util.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类型的javabean在javabean和json格式中相互转化了
3
顶
0
踩
分享到:
2009-10-26 11:47
浏览 19407
评论
3 楼
xmllong
2011-04-08
把封装的类共享下吧
2 楼
lyking2001
2011-01-13
Soimissu_plum 写道
感谢。。。实现了功能 ... 要是能见简单的封装下更好了....每个bean都要这么写转换麻烦,我写成了一个工具类,,,
呵呵,这个是当时学习的时候写的,项目中已经做了封装
1 楼
Soimissu_plum
2011-01-06
感谢。。。实现了功能 ... 要是能见简单的封装下更好了....每个bean都要这么写转换麻烦,我写成了一个工具类,,,