@JsonFormat失效解决
先說結論
@JsonFormat失效,換成@JSONField就好了
問題經過和原理
@JsonFormat作為Date類型的屬性值,返回前端格式化處理,很方便。
比如:
返回給前端是這樣:
但在我加了ResponseBodyAdvice之后就失效了。
ResponseBodyAdvice是一個接口,自定義一個類,實現這個接口后,就可以對controller層返回的數據統一處理了,不懂的可以理解為一個攔截器。
這個值最終接口返回給前端變成了類似這樣:
很明顯,@JsonFormat失效了。
具體原因再說,先記錄一下這個問題。
解決:
將
@JsonFormat(pattern = “yyyy/MM/dd HH:mm:ss”)
換成
@JSONField(format=“yyyy/MM/dd HH:mm:ss”)
JsonFormat注解是jackson的注解。
JSONField注解是fastjson的注解。
猜想
初步感覺,是JSONField作用于ResponseBodyAdvice之前,已經把對應的日期屬性改成了對應格式的字符串,所以ResponseBodyAdvice不會影響JSONField的結果。
而JsonFormat不起作用,可能有以下兩個原因:
1、JsonFormat作用于ResponseBodyAdvice之后,由于屬性被ResponseBodyAdvice過濾過一次后,JsonFormat可能就找不到對應的屬性了
2、JsonFormat和ResponseBodyAdvice互斥,有了ResponseBodyAdvice,JsonFormat就直接不起作用了。
驗證
總結
以上是生活随笔為你收集整理的@JsonFormat失效解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux---基础03
- 下一篇: 数据迁移记录