js JSON序列化的问题

返回的字段定义一个salary字段是BigDecimal类型的,后端返回了10.00,前端跟我说是10,没有.00

数据库定义的字段就是 decimal(12,2) 类型,debug查看内存中值也是10.00

自己使用yapi的接口测试工具显示也是10.00

百度一番说要加上注解@JsonFormat(shape = JsonFormat.Shape.STRING)

    /**
     * 薪水
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal salary;

结果没用

怀疑是序列化的问题

本地使用objectMapper序列化也是包含.00的

找到spring序列化的源码AbstractJackson2HttpMessageConverter->writeInternal方法

最终定位到UTF8JsonGenerator 这些也是正常的

image-20220322171149565.png

想起来是不是yapi的序列化有问题,试用postman 浏览器直接发送请求显示的是10.00

问了前端使用的http请求的js库 Axios

然后google一下果然早就有人提到了这个问题,原来是js JSON序列化导致的,试验了下 果然是这样

image.png

GitHub issue

你可能感兴趣的:(js JSON序列化的问题)