JSONObject.fromObject 日期类型转换问题
今天在开发的时候遇到的问题:
由于需要调用rest服务,所以将dto对象转换为JSON的时候出现了日期格式不正确的问题:
首先查看接收的DTO:
由于接口需要以数组的方式传输: JSONArray jsonArray = array.fromObject ( Arrays.asList ( esbDto ) );
在日志中查看转化之后的json:
[{"applyType": "INJURE","address": "","accountName": "XXX","injuryType": "DISABILITY","receiveOtherMoney": 0,"costAmount": 12333,"description": "开发测试","bankName": "中行","treatmentList": [],"recordId": 1903011404540000,"fundingEmployeeCode": "3594","phoneNumber": "13344444444","createdBy": "3594","fundingEmployeeName": "XXX","happenDate": {"date": 5,"hours": 0,"seconds": 0,"month": 2,"timezoneOffset": -480,"year": 119,"minutes": 0,"time": 1551715200000,"day": 2},"selfpayingAmount": 12333,"appliedBy": "00003594","familyLossAmount": 0,"applyDate": {"date": 1,"hours": 14,"seconds": 54,"month": 2,"timezoneOffset": -480,"year": 119,"minutes": 4,"time": 1551420294418,"day": 5},"relationship": "本人","account": "513123124123123123","familyMemberName": "XXX"}
]
可以很明显的看到两个日期对象不是我们想要的YYYY-MM-dd类型,
所以,很明显我们需要自己写一个转化器:
public class JsonDateValueProcessor implements JsonValueProcessor {@Overridepublic Object processArrayValue(Object obj, JsonConfig jsonconfig) {return process(obj);}@Overridepublic Object processObjectValue(String s, Object obj, JsonConfig jsonconfig) {return process(obj);}private Object process(Object obj) {if (obj == null) {// 如果时间为null,则返回空字串return "";}if (obj instanceof Date) {obj = new java.util.Date(((Date) obj).getTime());}if (obj instanceof java.util.Date) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",Locale.CHINA);// 格式化时间为yyyy-MM-dd类型return sdf.format(obj);} else {return new Object();}}
}
然后将其注册到jsonConfig中:
//2.json 包装JsonConfig jsonConfig = new JsonConfig();jsonConfig.registerJsonValueProcessor(Date.class,new JsonDateValueProcessor());// 注入处理Date类JSONArray jsonArray = array.fromObject ( Arrays.asList ( esbDto ),jsonConfig );
再来查看一下日志:
[{"applyType": "INJURE","address": "","accountName": "XXX","injuryType": "DISABILITY","receiveOtherMoney": 0,"costAmount": 12333,"description": "开发测试","bankName": "中行","treatmentList": [],"recordId": 1903011413540000,"fundingEmployeeCode": "3594","phoneNumber": "13344444444","createdBy": "3594","fundingEmployeeName": "XXX","happenDate": "2019-03-05","selfpayingAmount": 12333,"appliedBy": "00003594","familyLossAmount": 0,"applyDate": "2019-03-01","relationship": "本人","account": "513123124123123123","familyMemberName": "XXX"}
]
日期格式类型变成了我们想要的类型。
总结来说就是转换json的时候自己自定义一个日期处理类实现JsonValueProcessor接口,在实现类中进行自定义转化,
最后将其注入JsonConfig中,调用fromObject 时传入JsonConfig自定义对象即可。
JSONObject.fromObject 日期类型转换问题相关推荐
- 详解JSONObject.parseObject和JSONObject.fromObject——Web网络系列学习笔记
一. 说明 com.alibaba.fastjson.JSONObject是经常会用到的JSON工具包,同样它的转换方法也会经常被我们使用,包括对象转成JSON串,JSON串转成java对象等,如果过 ...
- SpringMVC日期类型转换问题处理方法归纳
前言 我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后 台实体类之间日期转换处理的问题了,说问题也不大,但很多人开发中经常会遇到这个问题,有时很令人头疼,有时间问题暴露的不是很明显,然 ...
- SpringMVC 日期类型转换
全局日期类型转换配置 配置SpringMVC配置文件 <bean id="conversionService" class="org.springframework ...
- Java进阶学习第十六天(Struts框架:配置、数据处理、自动封装、日期类型转换、文件上传)
一.Struts2配置 1.Struts2的Action开发的几种方式 ① 方式1:继承ActionSupport(一般使用方法) public class UserAction extends Ac ...
- JSONObject.fromObject() 解析后出现的精度丢失问题
将字符串转换为json的时候,如果字符串中有类似于: id:1573801191700.614 的数据,使用JSONObject.fromObject() 转换后的json中,id的值可能会变为id: ...
- mysql 日期类型转换
原文链接:https://www.cpweb.top/965 1.使用cast() 和 convert() 函数实现日期格式的转换 语法格式: convert( 表达式,数据类型 ) ...
- Maven项目无法使用JSONObject.fromObject方法的解决方案
JSONArray jsonArray = JSONArray.fromObject (arrayStr); 解决方案 导包依赖 import net.sf.json.JSONObject; < ...
- Date日期类型转换
1.String 类型转换Date类型 import java.text.ParseException; import java.text.SimpleDateFormat; import java. ...
- java对象转json字符串日期格式_Gson转Json字符串时将日期类型转换成Long型的方法...
有些特定需求, 比如说搜索引擎, 很多人都要求时间必须是时间戳. 所以, 我们把时间转成最原始的Long型. Gson默认的是不支持的, 需要手动处理一下. 日期转Long public class ...
- SpringMVC日期类型转换问题三大处理方法归纳
转自:http://blog.csdn.net/chenleixing/article/details/45190371 方法1.在实体中加入日期格式化注解 @DateTimeFormat(patte ...
最新文章
- 测试常用shell语句——数值,数组类型;函数创建
- MMU关闭时Cache的缓存策略是怎样的
- SAP Business Application Studio 如何同 SAP BTP CloudFoundry 环境绑定
- soap签名_签名SOAP消息–生成封装的XML签名
- android 获取默认程序图标,android – PackageManager.getApplicationIcon()返回默认图标?...
- TDengine与OpenTSDB对比测试
- Google Talk Testing(早期版本)
- VRay Next(4.0) for SketchUp之BIG分析图制作教程
- 如何出售自己的代码并且不让人看到自己的源码?
- 软件工程领域国际会议列表
- windows server 2016 由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系。
- 热乎乎的蚂蚁金服面经分享,offer已到手建议收藏(Java岗、附答案解析)
- SQL按姓氏笔画排序
- python uniform函数均匀分布_numpy.random.uniform均匀分布
- 20个VC开发小技巧
- UE4-地形材质函数创建及使用
- 通配符?,*,**区别
- 关于GBK中的英文字符占用一个字节还是两个字节的问题
- 三只松鼠:顾客决定你的KPI
- 飞思卡尔S12系列(基于MC9S12XET256MAA和/MC9S12XEP100)中断PIT资料总结和分享