Java序列化Long類型數(shù)據(jù)到前端數(shù)據(jù)失真

Java序列化Long類型數(shù)據(jù)到前端數(shù)據(jù)失真

現(xiàn)象
項目中用到了唯一ID生成器.生成出的ID是long型的(比如說4616189619433466044).
通過某個rest接口中返回json數(shù)據(jù)后,發(fā)現(xiàn)瀏覽器解析完變成了4616189619433466000.

原因
大致描述:java中得long能表示的范圍比js中number大,也就意味著部分數(shù)值在js中存不下(變成不準確的值).

解決方法
方法就是不用number來保存long值,而是使用string.可以在客戶端js修改,
也可以在服務端序列化的時候修改.

方案1:

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
//序列化成String的傳

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

方案1:

@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        /**
         * 序列化json時,將所有的long變成string
         * 因為js中得數(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);
    }

}
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內(nèi)部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,704評論 18 399
  • 今天參加了季老師的第三期學思行智慧父母,收獲良多,啟發(fā)很大,季老師辛苦了,感謝季老師平時對陶小寶的關注,讓他進步很...
    Bluesky0810閱讀 139評論 0 1
  • 昨天,下班比較晚,老板請我們?nèi)コ蕴厣r牛肉,(這家牛肉店,每天生意出奇的好,都是純正鮮牛肉,每天就那么多分量,去晚...
    梨逍遙閱讀 606評論 0 0
  • 老師,我們記得您 文/詩緣 三尺講臺 學生走了一茬又一茬 當年的祖國花朵 現(xiàn)都己成為棟樓之材 如今的您 黑發(fā)變白 ...
    蔣水敏閱讀 201評論 0 6
  • 乖兒的抵抗力比較差,每逢天氣突變的時候,要命的過敏性鼻炎就發(fā)作了;不停地打噴嚏,不停地流清鼻涕,反復發(fā)作,經(jīng)常一整...
    周琦橞閱讀 638評論 19 17

友情鏈接更多精彩內(nèi)容