A. JAVA如何進行強制類型轉換
如果這2種類型是兼容的,那麼Java 將自動地進行轉換。
B. Gson默認將int和long型數據轉換為double
你為什麼要這么搞呢,搞一個結構體把所有的屬性包括進去就行了。不要用object。這個和你直接使用map存有啥區別。給你個例子:
Gson gson = new Gson();
Foo foo = new Foo();
Foo foo2 = new Foo();
foo.setBar(2);
foo.setFoo(211);
System.out.println(gson.tojson(foo));
String sss = "{\"foo\":211,\"bar\":2}";
foo2 = gson.fromJson(sss, Foo.class);
System.out.println(foo2.getBar());
System.out.println(foo2.getFoo());
C. python json怎麼修改json數據
Json簡介:Json,全名 JavaScript Object Notation,是一種輕量級的數據交換格式。Json最廣泛的應用是作為AJAX中web伺服器和客戶端的通訊的數據格式。現在也常用於http請求中,所以對json的各種學習,是自然而然的事情。Python的官網網址:https://docs.python.org/2/library/json.html?highlight=json#mole-json
Json API 使用:python在版本2.6之前,是需要先下載包,安裝後才能使用的,有點類似現在的RF內使用SeleniumLibrary一樣。但是在2.6中,官方文檔(https://docs.python.org/2.6/whatsnew/2.6.html)明顯指出,「有一些重要的新的軟體包添加到了標准庫,比如multiprocessing 和json,但是跟python 3比,2.6的這些包不會引進更多的新功能。"於是安裝python2.6以上版本的童鞋,可以不需要下載json包,直接在所需的地方就import json 即可使用,在安裝目錄下的Lib 下,看到這兩個包(點進去仔細閱讀這些源碼,會有更多的收獲,)如下文所示:
D. 怎麼將long類型轉換為string類型
一、問題描述
最近在改造內部管理系統的時候, 發現了一個巨坑,就是前端 JS 在獲取後端 Long 型參數時,出現精度丟失!
起初,用 postman 模擬介面請求,都很正常,但是用瀏覽器請求的時候,就出現問題了!
問題復現
打開瀏覽器,請求介面,結果如下!
用 postman 模擬介面請求,結果如下!
剛開始的時候,還真沒發現這個坑,結果當進行測試的時候,才發現前端傳給後端的ID,與資料庫中存的ID不一致,才發現 JavaScript 還有這個天坑!
由於 JavaScript 中 Number 類型的自身原因,並不能完全表示 Long 型的數字,在 Long 長度大於17位時會出現精度丟失的問題。
當我們把上面的用戶 ID 改成 19 位的時候,我們再來看看瀏覽器請求返回的結果。
瀏覽器請求結果!
當返回的結果超過17位的時候,後面的全部變成0!
二、解決辦法
遇到這種情況,應該怎麼辦呢?
第一種辦法:在後台把 long 型改為String類型,但是代價有點大,只要涉及到的地方都需要改
第二種辦法:使用工具進行轉化把 long 型改為String類型,這種方法可以實現全局轉化(推薦)
第三種辦法:前端進行處理(目前沒有很好的辦法,不推薦)
因為項目涉及到的代碼非常多,所以不可能把 long 型改為 String 類型,而且使用 Long 類型的方法非常多,改起來風險非常大,所以不推薦使用!
最理想的方法,就是使用aop代理攔截所有的方法,對返回參數進行統一處理,使用工具進行轉化,過程如下!
2.1、Jackson 工具序列化對象
我們可以使用Jackson工具包來實現對象序列化。
首先在 maven 中添加必須的依賴
編寫一個轉化工具類JsonUtil
緊接著,編寫一個實體類Person,用於測試
最後,我們編寫一個測試類測試一下效果
輸出結果如下:
其中最關鍵一行代碼,是注冊了這個轉換類,從而實現將所有的 long 變成 string。
如果想對某個日期進行格式化,可以全局設置。
也可以,單獨對某個屬性進行設置,例如對createTime屬性格式化為yyyy-MM-dd,只需要加上如下註解即可。
工具轉化類寫好之後,就非常簡單了,只需要對 aop 攔截的方法返回的參數,進行序列化就可以自動實現將所有的 long 變成 string。
2.2、SpringMVC 配置
如果是 SpringMVC 項目,操作也很簡單。
自定義一個實現類,繼承自ObjectMapper
在 SpringMVC 的配置文件中加上如下配置
2.3、SpringBoot 配置
如果是 SpringBoot 項目,操作也類似。
編寫一個WebConfig配置類,並實現自WebMvcConfigurer,重寫configureMessageConverters方法
三、總結
在實際的項目開發中,很多服務都是純微服務開發,沒有用到SpringMVC,在這種情況下,使用JsonUtil工具類實現對象序列化,可能是一個非常好的選擇。