JSONObject转换JSON--将Date转换为指定格式

编程技术  /  houtizong 发布于 3年前   76

项目中,经常会用JSONObject插件将JavaBean或List<JavaBean>转换为JSON格式的字符串,而JavaBean的属性有时候会有java.util.Date这个类型的时间对象,这时JSONObject默认会将Date属性转换成这样的格式:

 

{"nanos":0,"time":-27076233600000,"minutes":0,"seconds":0,"hours":0,"month":11,"timezoneOffset":-480,"year":-789,"day":5,"date":22}

 而这种格式肯定是非常难以理解的,为了将Date转换为我们认识的“yyyy-MM-dd”格式,需要做以下操作。

 

 

首先创建一个时间转换器

 

public class JsonDateValueProcessor implements JsonValueProcessor {private String format ="yyyy-MM-dd";public JsonDateValueProcessor() {super();}public JsonDateValueProcessor(String format) {super();this.format = format;}@Overridepublic Object processArrayValue(Object paramObject,JsonConfig paramJsonConfig) {return process(paramObject);}@Overridepublic Object processObjectValue(String paramString, Object paramObject,JsonConfig paramJsonConfig) {return process(paramObject);}private Object process(Object value){        if(value instanceof Date){              SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);              return sdf.format(value);        }          return value == null ? "" : value.toString();      }}

 

 

然后在调用JSONObject之前创建一个JsonConfig,并且将上一步定义的date转换器注册进去:

JsonConfig jsonConfig = new JsonConfig();jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());

 

最后将JsonConfig放入JSONObject对象中,这里针对不同的数据类型有多种方式放入JsonConfig:

JSONObject json = new JSONObject();//Map转JSONjson.putAll(Map, jsonConfig);

 或者

JSONObject json = new JSONObject();//JavaBean转JSONjson.fromObject(object, jsonConfig)

 

最后我们看到的结果就是只要JavaBean中有Date对象,转换成JSON字符串时就会变成“yyyy-MM-dd”格式。

 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客