亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

FastJson時間格式化問題避坑經(jīng)驗(yàn)分享

 更新時間:2022年08月22日 09:49:40   作者:樹洞君  
這篇文章主要為大家介紹了FastJson時間格式化問題避坑經(jīng)驗(yàn)分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

問題背景

某一天,我們系統(tǒng)服務(wù)的依賴方找到我們,問我們?yōu)槭裁磿r間類型的字段會有這種數(shù)據(jù)存在?導(dǎo)致他們解析的時候報錯。

{"sloganEndtime": "20211-03-10 11:30:00"}
// 字段類型
private Date sloganEndtime;

于是我們開始進(jìn)行排查,最后發(fā)現(xiàn)數(shù)據(jù)源頭來源于一個導(dǎo)入表格的功能,商家運(yùn)營人員在導(dǎo)入數(shù)據(jù)的時候?qū)戝e了,所以導(dǎo)致了非常離譜的問題。

問題復(fù)現(xiàn)

利用原生JDK來轉(zhuǎn)換時間 代碼截圖如下:會發(fā)現(xiàn)不會出現(xiàn)異常

我們換FastJson來嘗試下,代碼如下:發(fā)現(xiàn)會報錯!

SkuMainBean mainBean = JSON.parseObject("{\"sloganEndTime\":\"20211-03-10
11:30:00\"}", SkuMainBean.class);
System.out.println(mainBean);
# 異常信息
Exception in thread "main" com.alibaba.fastjson.JSONException: For input
string: "20211-03-10 11:30:00"
at
com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONPars
er.java:627)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:361)

為什么FastJson會出問題

通過跟代碼,我們發(fā)現(xiàn)FastJson有其自己的默認(rèn)時間格式:

// com.alibaba.fastjson.JSON#DEFFAULT_DATE_FORMAT
public static String DEFFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

但是其使用判斷邏輯是預(yù)先校驗(yàn)了FORMAT與入?yún)⒌拈L度:

if (strVal.length() == parser.getDateFomartPattern().length()) {
DateFormat dateFormat = parser.getDateFormat();
try {
return (T) dateFormat.parse(strVal);
} catch (ParseException e) {
// skip
}
}
// ....................................
return (T) new java.util.Date(longVal);

解決方案(3種)

1、主動增加格式化注解,尤其是需要轉(zhuǎn)換未知的入?yún)r,需要提前確定

@JSONField(format="yyyy-MM-dd HH:mm:ss")
private Date sloganEndtime;

2、利用時間戳(Long)替換Date類型

3、自己的系統(tǒng)在進(jìn)行數(shù)據(jù)傳輸時,保證數(shù)據(jù)的合理性,增加相關(guān)校驗(yàn)

反思

  • 為什么FastJson(1.2.36版本)在使用日期格式化的時候要預(yù)先校驗(yàn)長度?

PS:為什么不檢測無注解直接轉(zhuǎn)換失???

  • 為什么其他系統(tǒng)在進(jìn)行JSON轉(zhuǎn)換的時候不給字段主動添加格式化注解?
  • 沒有絕對的答案,因?yàn)槭褂昧?xí)慣和代碼慣性的原因,我們經(jīng)常會忽略一些已經(jīng)習(xí)以為常的東西,只有做到更加的嚴(yán)謹(jǐn)和周全,才能盡量減少出錯的可能性。

以上就是FastJson時間格式化問題避坑經(jīng)驗(yàn)分享的詳細(xì)內(nèi)容,更多關(guān)于FastJson時間格式化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java System類兩個常用方法代碼實(shí)例

    Java System類兩個常用方法代碼實(shí)例

    這篇文章主要介紹了Java System類兩個常用方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 通過實(shí)踐了解如何處理Java異常

    通過實(shí)踐了解如何處理Java異常

    Java中的異常處理不是一個簡單的主題。初學(xué)者發(fā)現(xiàn)它很難理解,甚至有經(jīng)驗(yàn)的開發(fā)者也可以花幾個小時討論如何以及應(yīng)該拋出或處理哪些異常。下面我們通過實(shí)踐來了解如何解決異常
    2019-05-05
  • Java String類簡單用法實(shí)戰(zhàn)示例【字符串輸出、比較】

    Java String類簡單用法實(shí)戰(zhàn)示例【字符串輸出、比較】

    這篇文章主要介紹了Java String類簡單用法,結(jié)合具體實(shí)例形式分析了Java使用String類實(shí)現(xiàn)字符串的輸出和比較功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • java web支持jsonp的實(shí)現(xiàn)代碼

    java web支持jsonp的實(shí)現(xiàn)代碼

    這篇文章主要介紹了java web支持jsonp的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • SpringCloud如何搭建一個多模塊項(xiàng)目

    SpringCloud如何搭建一個多模塊項(xiàng)目

    這篇文章主要介紹了SpringCloud如何搭建一個多模塊項(xiàng)目,記錄下使用SpringCloud創(chuàng)建多模塊項(xiàng)目,一步一步記錄搭建的過程,感興趣的可以了解一下
    2021-05-05
  • Java后臺通過Collections獲取list集合中最大數(shù),最小數(shù)代碼

    Java后臺通過Collections獲取list集合中最大數(shù),最小數(shù)代碼

    這篇文章主要介紹了Java后臺通過Collections獲取list集合中最大數(shù),最小數(shù)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java 模擬真正的并發(fā)請求詳情

    Java 模擬真正的并發(fā)請求詳情

    有時需要測試一下某個功能的并發(fā)性能,又不要想借助于其他工具,索性就自己的開發(fā)語言,來一個并發(fā)請求就最方便了。下文我們就來學(xué)習(xí)Java 如何模擬真正的并發(fā)請求
    2021-09-09
  • Java函數(shù)式接口Supplier接口實(shí)例詳解

    Java函數(shù)式接口Supplier接口實(shí)例詳解

    這篇文章主要介紹了Java函數(shù)式接口Supplier接口實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目踩過的坑

    Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目踩過的坑

    IDEA旗艦版可以直接創(chuàng)建Spring MVC項(xiàng)目,但創(chuàng)建后的項(xiàng)目并不是直接就可以運(yùn)行,還需要進(jìn)行一些配置。這篇文章主要介紹了Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目踩坑記 ,需要的朋友可以參考下
    2020-03-03
  • java自定義Scanner類似功能類的實(shí)例講解

    java自定義Scanner類似功能類的實(shí)例講解

    這篇文章主要介紹了java自定義Scanner類似功能類的實(shí)例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論