Long類型的,反回給前端,精度丟失

問題:本案例,實體類id採用的是雪花id生成策略,數據庫類型是bigint類型的,實體類裏是Long類型的。查詢出來沒問題,但是序列化後反給前端,精度丟失了。

解決方案一:

在對應的id上加註解:

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

解決方案二:

寫配置文件:以下代碼就是,但是會把所有的long類型轉換成String類型。建議採用第一種,比較好

@Configuration
public class JsonLongToStringConfig extends WebMvcConfigurationSupport {
    /**
     * springboot
     * 解決long、bigint轉json丟失精度
     */
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        /**
         * 序列換成json時,將所有的long變成string
         * 因爲js中得數字類型不能包含所有的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);
    }
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章