解决Java中Long类型转换成Json时,在Js代码调用时精度丢失的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010180738/article/details/79633827

在Java中18位或者更高位的Long类型转化成json,js调用时会存在精度丢失的问题。Spring MVC中默认的消息转换器时MappingJackson2HttpMessageConverter,使用的是Jackson系列化的,也就是ObjectMapper。所以我们也可以设置ObjectMapper将所有的Long类型转换成String类型,但是这个方法粒度大,会将所有的Long类型都转换成String类型,大部分的时候我们只需要将特定Bean中的Long类型转换成String即可,这个时候采用注解 @JsonSerialize(using = ToStringSerializer.class)即可将Long类型的数据转换成json时转换成String。

package com.xfl.boot.entity;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

/**
 * Created by XFL
 * time on 2017/8/16 23:50
 * description:
 */
@JsonInclude(value = JsonInclude.Include.NON_EMPTY)
public class User {
    private String name;
    private String age;
    private String desc;
    //将Long类型系列化成String避免精度丢失
    @JsonSerialize(using = ToStringSerializer.class)
    private Long userId;
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", desc='" + desc + '\'' +
                ", userId=" + userId +
                '}';
    }
}

参考文章:https://www.cnblogs.com/reachlins/p/6558519.html
http://blog.csdn.net/xufei_0320/article/details/78243527

猜你喜欢

转载自blog.csdn.net/u010180738/article/details/79633827