在SpringMVC中通過配置Gson的消息轉換器可以使Controller層直接返回對象而非手動去轉換對象為json字符串之后再返回。text/plain;charset=UTF-8text/html;charset=UTF-8text/plain;charset=UTF-8application/json;charset=UTF-8Java中的代碼也很簡潔,類似于下面那的代碼:@RequestMapping(path="/getUserInfoPageByParam")@ResponseBodypublicJsonResultgetUserInfoPageByParam(){//獲取數據并直接返回,由GsonHttpMessageConverter在后臺進行轉換包裝成json字符串returnjsonResult;}但是Gson默認的轉換會把Java中的long/Long類型的數據轉換為JavaScript中的Number類型,這看起來沒什么問題的轉換卻會造成一個麻煩,就是Java和JavaScript的數值類型最大值不同。Java中Long最大值在JavaScript會出現溢出的行為,然后就造成了大整數精度丟失。例如396193654462615552到JavaScript中之后會變成396193654462615550,現在吾輩只能手動轉換對象,將Long都包裝成字符串類型然后傳到頁面,Controller里面是類似于下面的代碼:@RequestMapping(path="/getUserInfoPageByParam")@ResponseBodypublicStringgetUserInfoPageByParam(){//獲取數據并存到jsonResult中returnGsonUtil.gsonToString(jsonResult);}現在這樣暫時能用,但這樣的代碼太丑了點,有沒有什么辦法能夠做到類似于第一種直接返回對象不用手動轉換的方法呢?(前提是把Long的大數字溢出解決掉呀)
Spring MVC 中如何自定義 Gson 的消息轉換器?
MYYA
2019-05-23 18:34:26
