想必我们在做项目的时候,都会遇到服务端与客户端交互数据。一般情况下我们都会采用json格式或者xml格式,将服务端的数据转换成这两种格式之一。
但是,如果我们将数据转换成json格式的时候,我们也许会遇到Date日期型的数据转换成json格式后,并不是我们想要的格式。下面我们通过简单的demo
来说明这个问题。
我们按照一般json格式生成,会出现以下问题:
采用json:将数据生成json格式,需要导入相应的jar包,如下图:
Student.java
package com.xbmu.html" target="_blank">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<Student> list = new ArrayList<Student>(); 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<Student> list = new ArrayList<Student>(); 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字符串内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
我使用Spring靴和Spring4。 我尝试使用Java 8 LocalDate。 在json中输入日期 出生日期:“1969-12-29” 在服务器端这个领域我有 我得到这个错误 组织。springframework。http。转换器。HttpMessageNoteableException:无法读取文档:无法从字符串值('1969-12-29')实例化类型为[简单类型,类java.time.
问题内容: 我有一堆记录,日期格式为字符串,例如“ 04/17/2009” 我想将它们转换为mysql datetime字段 我计划使用foreach循环读取旧的日期值,并将新格式化的值插入每个记录的新字段中 什么是转换字符串的最佳方法…我认为php可能有一种自动执行此方法的方法? 谢谢 问题答案: 首先,将字符串转换为时间戳: 然后做一个
本文向大家介绍java字符串与日期类型转换的工具类,包括了java字符串与日期类型转换的工具类的使用技巧和注意事项,需要的朋友参考一下 常用的字符串转date,和日期转字符串的方法,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
问题内容: 我有这个字符串: 我需要将其作为日期类型,以便我使用date函数。 有谁知道我怎么能把这个字符串转换成日期? 问题答案: 你可以这样做 例: 您可以在此处找到带有所有指令的表。 如果要增加2天,可以使用:
我的最后一个目标是转换这种类型的时间戳: 1531888605109 类似于:
问题内容: 该java.util.Date 方法显示当地时区的日期。 在几种常见的情况下,我们希望以UTC格式打印数据,包括日志,数据导出以及与外部程序的通信。 在UTC中创建String表示形式的最佳方法是什么? 如何用更好的格式替换无法排序的juDate 格式(感谢@JonSkeet!)? 附录 我认为以自定义格式和时区打印日期的标准方法非常繁琐: 我一直在寻找像这样的单线: 问题答案: 遵循