欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

date轉json報錯

江奕云1年前8瀏覽0評論

在使用日期格式的數據轉換成 JSON 格式時,有時會出現 date 轉換成 JSON 錯誤的情況。這種情況多數出現在前后端分離開發中。

常見的 date 轉換成 JSON 報錯的錯誤提示為:

{"timestamp":"2019-03-11T11:28:17.754+0000","status":500,"error":"Internal Server Error","message":"Could not write JSON: class java.util.Date cannot be cast to java.lang.String; nested exception is com.fasterxml.jackson.databind.JsonMappingException: class java.util.Date cannot be cast to java.lang.String (through reference chain: com.xxx.User[\"birthday\"])","path":"/user/save"}

錯誤提示中顯示了報錯的原因:class java.util.Date cannot be cast to java.lang.String。

通常情況下,date 轉換成 JSON 報錯是因為在將 Java 中日期對象轉為 JSON 字符串時,Jackson 框架默認使用 ToStringSerializer 序列化器把 date 對象轉換成字符串。而這個過程需要使用到 toString 方法,如果數據中 date 字段沒有 toString 方法,就會出現 date 轉換成 JSON 錯誤。

解決方法是,創建一個自定義的日期格式(如:yyyy-MM-dd HH:mm:ss),使用 @JsonFormat 注解 date 字段。

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date birthday;

使用 @JsonFormat 注解后,Jackson 在將 date 對象轉為 JSON 字符串時,就會按照自定義格式輸出,避免出現 date 轉換成 JSON 錯誤。

另外,在使用以上方法時,需注意枚舉類型也會導致很多問題,不過 Jackson 框架也提供相應的注解支持,可以使用 @JsonEnumDefaultValue 注解對枚舉的默認值進行劫持。