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;