Java序列化JSON丟失精度問題的解決方法(修復Long類型太長)
Java序列化JSON時long型數(shù)值,會出現(xiàn)精度丟失的問題。
原因:
java中得long能表示的范圍比js中number大,也就意味著部分數(shù)值在js中存不下(變成不準確的值).
解決辦法一:
使用ToStringSerializer的注解,讓系統(tǒng)序列化時,保留相關精度
@JsonSerialize(using=ToStringSerializer.class)
private Long createdBy;
上述方法需要在每個對象都配上該注解,此方法過于繁鎖。
解決辦法(二):
使用全局配置,將轉(zhuǎn)換時實現(xiàn)自動ToStringSerializer序列化
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);
}
方法二比較完美,強烈推薦使用!
補充:后臺date類型,而返回到前段為long(如后端yyy-mm-dd hh:mm:ss 返回前段為1562566384)
1.在實體類中在要轉(zhuǎn)換的字段上加上該注解,如下:
/** 訂單創(chuàng)建時間 */
@JsonSerialize(using = DateToLongSerializer.class)
private Date createTiem;2.并指定一個格式化的類。如下:
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時不返回給前端
總結
到此這篇關于Java序列化JSON丟失精度問題的解決方法的文章就介紹到這了,更多相關Java序列化JSON丟失精度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
StackTraceElement獲取方法調(diào)用棧信息實例詳解
這篇文章主要介紹了StackTraceElement獲取方法調(diào)用棧信息實例詳解,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02
解決RestTemplate 請求url中包含百分號 會被轉(zhuǎn)義成25的問題
這篇文章主要介紹了解決RestTemplate 請求url中包含百分號 會被轉(zhuǎn)義成25的問題,具有很好的參考價值,希望對大家有所幫助。2021-10-10
JAVA如何轉(zhuǎn)換樹結構數(shù)據(jù)代碼實例
這篇文章主要介紹了JAVA如何轉(zhuǎn)換樹結構數(shù)據(jù)代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
Java實現(xiàn)將PDF轉(zhuǎn)為圖片格式的方法詳解
PDF文件和圖片文件,這是兩種完全不一樣的格式,可是有的時候這兩種格式卻是有相互轉(zhuǎn)換的需要,本文將介紹如何通過Java應用程序快速高效地將PDF轉(zhuǎn)為圖片格式。一起來看看吧2023-03-03
java 全角半角字符轉(zhuǎn)換如何實現(xiàn)
在java中可能會用到過全角半角字符轉(zhuǎn)換問題,于是網(wǎng)上搜索整理了一下,曬出來和大家分享,希望可以幫助你們2012-12-12
springboot定時任務備份mysql數(shù)據(jù)庫的實現(xiàn)示例
為了防止數(shù)據(jù)庫被清庫或者誤刪數(shù)據(jù)庫的情況,所以需要定時將mysql數(shù)據(jù)庫中的數(shù)據(jù)進行備份,本文主要介紹了springboot定時任務備份mysql數(shù)據(jù)庫的實現(xiàn)示例,需要的朋友們下面隨著小編來一起學習學習吧2024-03-03
Spring init-method與destroy-method屬性的用法解析
這篇文章主要介紹了Spring init-method與destroy-method屬性的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08

