java json日期格式化_JSON格式化日期方法

首先我使用的工具是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 < dates.length; 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

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

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都要这么写转换麻烦,我写成了一个工具类,,,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值