您的位置:首页 > Web前端 > JavaScript

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

2018-03-20 23:37 2441 查看
在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
4000
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐