[英]Java Gson parse not deserializing correctly
我有一個帶有值的List<List<Integer>>
[[537316070],[306297332],[319303159],[538639811],[528406093],[166705854],[124574525],[967403337],[569514785],[304831454],[219384921],[308948513],[355538394],[297996417]]
用Gson序列化之后。
當我使用反序列化它時
List<List<Integer>> data = (List<List<Integer>>) GsonParser.gson.fromJson(datastr, List.class);
我正進入(狀態
[[5.3731607E8], [3.06297332E8], [3.19303159E8], [5.38639811E8], [5.28406093E8], [1.66705854E8], [1.24574525E8], [9.67403337E8], [5.69514785E8], [3.04831454E8], [2.19384921E8], [3.08948513E8], [3.55538394E8], [2.97996417E8]]
有誰知道什么是錯的?
謝謝
默認情況下, Gson
將任何JSON號解析為double
。 這發生在ObjectTypeAdapter#read(JsonReader)
方法中:
...
case NUMBER:
return in.nextDouble();
...
請執行下列操作
List<List<Integer>> data = GsonParser.gson.fromJson(json, new TypeToken<List<List<Integer>>>() {}.getType());
將它們作為Integer
實例。
TypeToken
是一個Java hack,用於獲取實際的泛型參數類型。 javadoc說
構造一個新類型的文字。 從類型參數派生表示類。
客戶端創建一個空的匿名子類。 這樣做會在匿名類的類型層次結構中嵌入type參數,因此我們可以在運行時重新構建它,盡管擦除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.