返回的字段定義一個salary字段是BigDecimal類型的,后端返回了10.00,前端跟我說是10,沒有.00
數(shù)據(jù)庫定義的字段就是 decimal(12,2) 類型,debug查看內(nèi)存中值也是10.00
自己使用yapi的接口測試工具顯示也是10.00
百度一番說要加上注解@JsonFormat(shape = JsonFormat.Shape.STRING)
/**
* 薪水
*/
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal salary;
結(jié)果沒用
懷疑是序列化的問題
本地使用objectMapper序列化也是包含.00的
找到spring序列化的源碼AbstractJackson2HttpMessageConverter->writeInternal方法
最終定位到UTF8JsonGenerator 這些也是正常的

image-20220322171149565.png
想起來是不是yapi的序列化有問題,試用postman 瀏覽器直接發(fā)送請求顯示的是10.00
問了前端使用的http請求的js庫 Axios
然后google一下果然早就有人提到了這個問題,原來是js JSON序列化導(dǎo)致的,試驗(yàn)了下 果然是這樣

image.png