欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java序列化JSON丟失精度問題的解決方法(修復(fù)Long類型太長(zhǎng))

 更新時(shí)間:2022年03月08日 11:02:46   作者:愛余星痕  
這篇文章主要給大家介紹了關(guān)于Java序列化JSON丟失精度問題的解決方法,修復(fù)Long類型太長(zhǎng)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

Java序列化JSON時(shí)long型數(shù)值,會(huì)出現(xiàn)精度丟失的問題。

原因:

java中得long能表示的范圍比js中number大,也就意味著部分?jǐn)?shù)值在js中存不下(變成不準(zhǔn)確的值).

解決辦法一:

使用ToStringSerializer的注解,讓系統(tǒng)序列化時(shí),保留相關(guān)精度

    @JsonSerialize(using=ToStringSerializer.class)
    private Long createdBy;

上述方法需要在每個(gè)對(duì)象都配上該注解,此方法過于繁鎖。

解決辦法(二):

使用全局配置,將轉(zhuǎn)換時(shí)實(shí)現(xiàn)自動(dòng)ToStringSerializer序列化

Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();

    ObjectMapper objectMapper = new ObjectMapper();
    /**
     * 序列換成json時(shí),將所有的long變成string
     * 因?yàn)閖s中得數(shù)字類型不能包含所有的java long值
     */
    SimpleModule simpleModule = new SimpleModule();
    simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
    simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
    objectMapper.registerModule(simpleModule);

    jackson2HttpMessageConverter.setObjectMapper(objectMapper);
    converters.add(jackson2HttpMessageConverter);
}

方法二比較完美,強(qiáng)烈推薦使用!

補(bǔ)充:后臺(tái)date類型,而返回到前段為long(如后端yyy-mm-dd hh:mm:ss 返回前段為1562566384)

1.在實(shí)體類中在要轉(zhuǎn)換的字段上加上該注解,如下:

/** 訂單創(chuàng)建時(shí)間 */
    @JsonSerialize(using = DateToLongSerializer.class)
    private Date createTiem;

2.并指定一個(gè)格式化的類。如下:

public class DateToLongSerializer extends JsonSerializer<Date> {
    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeNumber(date.getTime() / 1000);
    }
}

@JsonIgnore 該注解的作用是轉(zhuǎn)成json時(shí)不返回給前端

總結(jié)

到此這篇關(guān)于Java序列化JSON丟失精度問題的解決方法的文章就介紹到這了,更多相關(guān)Java序列化JSON丟失精度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論