當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JSONObject.fromObject 日期类型转换问题
生活随笔
收集整理的這篇文章主要介紹了
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 日期类型转换问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [hackinglab][CTF][脚本
- 下一篇: javascript调试常用工具讲解