簡體   English   中英

Java Gson解析沒有正確反序列化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM