java date转json_Java将Date日期类型字段转换成json字符串的方法

想必我们在做项目的时候,都会遇到服务端与客户端交互数据。一般情况下我们都会采用json格式或者xml格式,将服务端的数据转换成这两种格式之一。

但是,如果我们将数据转换成json格式的时候,我们也许会遇到Date日期型的数据转换成json格式后,并不是我们想要的格式。下面我们通过简单的demo

来说明这个问题。

我们按照一般json格式生成,会出现以下问题:

采用json:将数据生成json格式,需要导入相应的jar包,如下图:

c33d5f9ca2de3f31c0adf085d6cd6197.png

Student.java

package com.xbmu.bean;

import java.io.Serializable;

import java.util.Date;

public class Student implements Serializable {

private String username;

private Date birthday;

public Student() {

super();

// TODO Auto-generated constructor stub

}

public Student(String username, Date birthday) {

super();

this.username = username;

this.birthday = birthday;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public Date getBirthday() {

return birthday;

}

public void setBirthday(Date birthday) {

this.birthday = birthday;

}

@Override

public String toString() {

return "Student [username=" + username + ", birthday=" + birthday + "]";

}

}

TestDateValueToJson.java

package com.xbmu.test;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import net.sf.json.JSONArray;

import com.xbmu.bean.Student;

public class TestDateValueToJson {

public static void main(String[] args) {

/**

* 创建三个student对象,并将对象添加到List集合中

*

* */

List list = new ArrayList();

Student student = new Student("张三", new Date());

list.add(student);

student = new Student("李四",new Date());

list.add(student);

student = new Student("王五",new Date());

list.add(student);

/**将list集合众的数据转换成json格式的字符串形式*/

JSONArray array = new JSONArray();

array = array.fromObject(list);

System.out.println(array.toString());

运行Java应用程序,看见在控制台是哪个打印出了:(这里通过json格式化工具处理后了,方便大家阅读)

[

{

"birthday": {

"date": 3,

"day": 4,

"hours": 9,

"minutes": 5,

"month": 11,

"seconds": 1,

"time": 1449104701018,

"timezoneOffset": -480,

"year": 115

},

"username": "张三"

},

{

"birthday": {

"date": 3,

"day": 4,

"hours": 9,

"minutes": 5,

"month": 11,

"seconds": 1,

"time": 1449104701018,

"timezoneOffset": -480,

"year": 115

},

"username": "李四"

},

{

"birthday": {

"date": 3,

"day": 4,

"hours": 9,

"minutes": 5,

"month": 11,

"seconds": 1,

"time": 1449104701018,

"timezoneOffset": -480,

"year": 115

},

"username": "王五"

}

]

虽然符合json语法格式,但是里面的birthday字段是日期型的,并不是我们一般情况下需要的。这时候,我们就必须写一个工具类进行处理了。

但遇到Date类型的数据的时候,就需要进行处理。

package com.xbmu.utils;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Locale;

import net.sf.json.JsonConfig;

import net.sf.json.processors.JsonValueProcessor;

/**

* 自定义JsonValueProcessor

* 比如我们要控制JSON序列化过程中的Date对象的格式化,以及数值的格式化,JsonValueProcessor是最好的选择。

* @author bitaotao

*

*/

public class JsonDateValueProcessor implements JsonValueProcessor {

private String pattern = "yyyy-MM-dd";

public Object processArrayValue(Object value, JsonConfig config) {

return process(value);

}

public Object processObjectValue(String key, Object value, JsonConfig config) {

return process(value);

}

private Object process(Object value){

if(value instanceof Date){

SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.UK);

return sdf.format(value);

}

return value == null ? "" : value.toString();

}

}

除了自定义日期格式外,还可以如法炮制,控制数值格式化、HTML内容转码等。

TestDateValueToJson.java

package com.xbmu.test;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import net.sf.json.JSONArray;

import net.sf.json.JsonConfig;

import com.xbmu.bean.Student;

import com.xbmu.utils.JsonDateValueProcessor;

public class TestDateValueToJson {

public static void main(String[] args) {

/**

* 创建三个student对象,并将对象添加到List集合中

*

* */

List list = new ArrayList();

Student student = new Student("张三", new Date());

list.add(student);

student = new Student("李四",new Date());

list.add(student);

student = new Student("王五",new Date());

list.add(student);

/**将list集合众的数据转换成json格式的字符串形式*/

JsonConfig config = new JsonConfig();

JsonDateValueProcessor jsonValueProcessor = new JsonDateValueProcessor();

config.registerJsonValueProcessor(Date.class, jsonValueProcessor);

JSONArray array = new JSONArray();

array = array.fromObject(list,config);

System.out.println(array.toString());

}

}

运行Java应用程序,会得到我们期望的json格式:

[

{

"birthday": "2015-12-03",

"username": "张三"

},

{

"birthday": "2015-12-03",

"username": "李四"

},

{

"birthday": "2015-12-03",

"username": "王五"

}

]

很显然这种日期格式,是我们经常使用的。也方便在客户端解析这种格式的json字符串。

总结

到此这篇关于Java将Date日期类型字段转换成json字符串的文章就介绍到这了,更多相关Java Date日期类型字段转json字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值