解析我有一些對象 類對象的JSON字符串represenatation是GSON龍丟失的數據時,從字符串
public class SMPBBaseObjectsList {
public ArrayList<Object> data = new ArrayList<>();
public Integer count;
public Integer limitFrom;
public Integer limitTo;
public Boolean hasMore;
public String dataItemsClass;
}
,我有JSON
{ 「classItem」:「smpb.utility。 classes.SMPBBaseObjectsList」, 「dataItemsClass」: 「smpb.base.classes.SMPBUser」, 「dataSliceCode」: 「012013」, 「數據」:[{ 「ID」:1374046117510970000 「名稱」: 「Test3的」, 「classItem」 :「smpb.base.classes.SMPBUser」,「dataSliceCode」:「012013」}],「filter」:{「orderItems」:[],「filterItems」:[]}}
我嘗試解析此JSON和創建我旁邊的代碼類的對象:
String json = "{\"classItem\":\"smpb.utility.classes.SMPBBaseObjectsList\",\"dataItemsClass\":\"smpb.base.classes.SMPBUser\",\"dataSliceCode\":\"012013\",\"data\":[{\"id\":1374046117510970000,\"Name\":\"Test3\",\"classItem\":\"smpb.base.classes.SMPBUser\",\"dataSliceCode\":\"012013\"}],\"filter\":{\"orderItems\":[],\"filterItems\":[]}}";
SMPBBaseObjectsList list = new GsonBuilder().create().fromJson(json, SMPBBaseObjectsList.class);
System.out.println("BEFORE:" + json);
System.out.println("AFTER: " + list);
系統輸出:
BEFORE: { 「classItem」:「smpb.utility ,「數據項」,「數據項目類別」,「數據項目類別」,「數據項目」,「數據項目」,「數據項目」,「數據項目」,「數據項目」,「數據項目」,「數據項目」,「數據項目」 「classItem」:「smpb.base.classes.SMPBUser 「 」dataSliceCode「: 」012013「}], 」過濾器「:{ 」的OrderItems「:[], 」filterItems「:[]}}
AFTER: { 」classItem「:」 smpb.utility。 ,「數據」:[{「Name」:「Test3」,「id」:1.374044905885298011E18, 「classItem」: 「smpb.base.classes.SMPBUser」, 「dataSliceCode」: 「012013」}], 「過濾器」:{ 「的OrderItems」:[], 「filterItems」:[]}}
正如你可以看到在JSON字符串中,我的ID值爲1374044905885298000,但是當對象從字符串序列化後我得到了1.374044905885298011E18
問題是什麼這種表示形式丟失了最後的零0000,我得到了長1374044905885297920
爲什麼?以及如何解決它?
數組中的數據是字符串映射,它已經是所有Long id雙格式。
我嘗試registerAdapater長或雙但從未觸發。 GSON 2.2.4
版本
UPDATE
這不是重複的問題
How to prevent Gson from converting a long number (a json string) to scientific notation format?
[如何防止Gson將長數字(一個json字符串)轉換爲科學記數法格式?](http://stackoverflow.com/questions/11586299/how-to-prevent-gson-from-轉換成一個長號碼的json-string-to-scientific) – 2013-07-17 08:56:38
不是。如果你閱讀了一個用戶,你會發現它不是解串的解決方案,這是合理的STRING表示。但如果你嘗試反序列化JsonElement jsonElement = jsonParser.parse(json);上課你得到我的錯誤。 –
要修復它,你可以寫一個自定義的反序列化器類。看看這裏:http://stackoverflow.com/questions/5845822/gson-deserializing-key-value-to-custom-object – gawi