今天在开发的时候遇到的问题:

由于需要调用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 日期类型转换问题相关推荐

  1. 详解JSONObject.parseObject和JSONObject.fromObject——Web网络系列学习笔记

    一. 说明 com.alibaba.fastjson.JSONObject是经常会用到的JSON工具包,同样它的转换方法也会经常被我们使用,包括对象转成JSON串,JSON串转成java对象等,如果过 ...

  2. SpringMVC日期类型转换问题处理方法归纳

    前言 我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后 台实体类之间日期转换处理的问题了,说问题也不大,但很多人开发中经常会遇到这个问题,有时很令人头疼,有时间问题暴露的不是很明显,然 ...

  3. SpringMVC 日期类型转换

    全局日期类型转换配置 配置SpringMVC配置文件 <bean id="conversionService" class="org.springframework ...

  4. Java进阶学习第十六天(Struts框架:配置、数据处理、自动封装、日期类型转换、文件上传)

    一.Struts2配置 1.Struts2的Action开发的几种方式 ① 方式1:继承ActionSupport(一般使用方法) public class UserAction extends Ac ...

  5. JSONObject.fromObject() 解析后出现的精度丢失问题

    将字符串转换为json的时候,如果字符串中有类似于: id:1573801191700.614 的数据,使用JSONObject.fromObject() 转换后的json中,id的值可能会变为id: ...

  6. mysql 日期类型转换

    原文链接:https://www.cpweb.top/965 1.使用cast() 和 convert() 函数实现日期格式的转换   语法格式:    convert( 表达式,数据类型 )     ...

  7. Maven项目无法使用JSONObject.fromObject方法的解决方案

    JSONArray jsonArray = JSONArray.fromObject (arrayStr); 解决方案 导包依赖 import net.sf.json.JSONObject; < ...

  8. Date日期类型转换

    1.String 类型转换Date类型 import java.text.ParseException; import java.text.SimpleDateFormat; import java. ...

  9. java对象转json字符串日期格式_Gson转Json字符串时将日期类型转换成Long型的方法...

    有些特定需求, 比如说搜索引擎, 很多人都要求时间必须是时间戳. 所以, 我们把时间转成最原始的Long型. Gson默认的是不支持的, 需要手动处理一下. 日期转Long public class ...

  10. SpringMVC日期类型转换问题三大处理方法归纳

    转自:http://blog.csdn.net/chenleixing/article/details/45190371 方法1.在实体中加入日期格式化注解 @DateTimeFormat(patte ...

最新文章

  1. 测试常用shell语句——数值,数组类型;函数创建
  2. MMU关闭时Cache的缓存策略是怎样的
  3. SAP Business Application Studio 如何同 SAP BTP CloudFoundry 环境绑定
  4. soap签名_签名SOAP消息–生成封装的XML签名
  5. android 获取默认程序图标,android – PackageManager.getApplicationIcon()返回默认图标?...
  6. TDengine与OpenTSDB对比测试
  7. Google Talk Testing(早期版本)
  8. VRay Next(4.0) for SketchUp之BIG分析图制作教程
  9. 如何出售自己的代码并且不让人看到自己的源码?
  10. 软件工程领域国际会议列表
  11. windows server 2016 由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系。
  12. 热乎乎的蚂蚁金服面经分享,offer已到手建议收藏(Java岗、附答案解析)
  13. SQL按姓氏笔画排序
  14. python uniform函数均匀分布_numpy.random.uniform均匀分布
  15. 20个VC开发小技巧
  16. UE4-地形材质函数创建及使用
  17. 通配符?,*,**区别
  18. 关于GBK中的英文字符占用一个字节还是两个字节的问题
  19. 三只松鼠:顾客决定你的KPI
  20. 飞思卡尔S12系列(基于MC9S12XET256MAA和/MC9S12XEP100)中断PIT资料总结和分享

热门文章

  1. mysql如何防止sql注入
  2. Linux下C语言实现俄罗斯方块——详细版
  3. android 4.4 生僻字,Android上显示生僻字的方法
  4. LoadRunner11 压力测试
  5. GC算法精解(分代搜集算法)
  6. 联想电脑Windows7系统重装方法,简单易上手
  7. 第一个python程序:爬虫下载课件
  8. python爬虫文字全是乱码_Python爬虫乱码的解决方案!
  9. pr用什么显卡比较好_用视频剪辑软件pr,电脑要什么配置最好
  10. vs2015安装编辑神器:resharper10.0