Java序列化JSON丟失精度問題的解決方法(修復Long類型太長)
Java序列化JSON時long型數值,會出現精度丟失的問題。
原因:
java中得long能表示的范圍比js中number大,也就意味著部分數值在js中存不下(變成不準確的值).
解決辦法一:
使用ToStringSerializer的注解,讓系統(tǒng)序列化時,保留相關精度
@JsonSerialize(using=ToStringSerializer.class)
private Long createdBy;
上述方法需要在每個對象都配上該注解,此方法過于繁鎖。
解決辦法(二):
使用全局配置,將轉換時實現自動ToStringSerializer序列化
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);
}
方法二比較完美,強烈推薦使用!
補充:后臺date類型,而返回到前段為long(如后端yyy-mm-dd hh:mm:ss 返回前段為1562566384)
1.在實體類中在要轉換的字段上加上該注解,如下:
/** 訂單創(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 該注解的作用是轉成json時不返回給前端
總結
到此這篇關于Java序列化JSON丟失精度問題的解決方法的文章就介紹到這了,更多相關Java序列化JSON丟失精度內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java使用freemarker模板生成html再轉為pdf
這篇文章主要為大家詳細介紹了java如何使用freemarker模板生成html,再利用iText將生成的HTML轉換為PDF文件,感興趣的小伙伴可以參考下2025-04-04
解決在Gradle/IDEA中無法正常使用readLine的問題原因
這篇文章主要介紹了在Gradle/IDEA中無法正常使用readLine的解決方法,原因是由于Gradle的標準輸入默認并不與系統(tǒng)標準輸入綁定,需手動設置,需要的朋友可以參考下2021-12-12
Java反射通過Getter方法獲取對象VO的屬性值過程解析
這篇文章主要介紹了Java反射通過Getter方法獲取對象VO的屬性值過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02
JavaIO?BufferedReader和BufferedWriter使用及說明
這篇文章主要介紹了JavaIO?BufferedReader和BufferedWriter使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
springmvc處理模型數據ModelAndView過程詳解
這篇文章主要介紹了springmvc處理模型數據ModelAndView過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01

