Swagger 中Long类型精度丢失及解决

本文档介绍了在使用Swagger时遇到的Long类型精度丢失问题,以及如何通过在Java后端进行处理来解决这一问题。具体解决方案包括将Long类型转换为字符串,使用`@JsonFormat`注解以及自定义`JsonSerializer`来确保Long类型的精度不受损失。
摘要由CSDN通过智能技术生成

1、问题:Swagger文档解析JAVA后端返回的Long类型,出现的精度丢失问题

返回实体

Long 类型在swagger 中自动转换为 integer(int64)

2、 swagger 接口文档请求示例

3、post 接口请求结果示例

4、解决(客户端没有问题,可不解决)

4.1 long类型在业务代码中转为字符串

4.2 在返回实体字段增加【@JsonFormat】注解

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @ApiModelProperty(value = "用户ID")
    private Long userId;

4.3 利用JsonSerializer完成注解,完美解决Long类型精度问题,需要继承JsonSerializer类

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
 
import java.io.IOException;
 
 
public class JsonLongSerializer extends JsonSerializer<Long> {
    @Override
    public void serialize(Long aLong, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeString(Long.toString(aLong));
    }
}

返回实体字段增加注解

@JsonSerialize(using = JsonLongSerializer.class )
private Long userId;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值