热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javacjson时间转换_Java将Date日期类型字段转换成json字符串的方法

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

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

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

来说明这个问题。

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

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

b98033ac7039e5d4bb695b41d4ebf4ea.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字符串内容请搜索WEB开发者以前的文章或继续浏览下面的相关文章希望大家以后多多支持WEB开发者!



推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
author-avatar
姑获_626
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有