Gson Long hat beim Parsen von String Daten verloren
Ich habe json string represenatation von einigen objektklassenobjekten
public class SMPBBaseObjectsList {
public ArrayList<Object> data = new ArrayList<>();
public Integer count;
public Integer limitFrom;
public Integer limitTo;
public Boolean hasMore;
public String dataItemsClass;
}
Und ich habe 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 ": []} }
Ich versuche diesen json zu analysieren und erstelle ein Objekt meiner Klasse mit dem nächsten Code:
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);
Systemausgaben:
VOR:{"classItem": "smpb.utility.classes.SMPBBaseObjectsList", "dataItemsClass": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013", "data": [{"id": 1374044905885298000, "Name": "Test3", "classItem": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013"}, "filter": {"orderItems": [], "filterItems": [ ]}}
NACH DEM: {"classItem": "smpb.utility.classes.SMPBBaseObjectsList", "dataItemsClass": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013", "data": [{"Name": "Test3" ,"id": 1.374044905885298011E18, "classItem": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013"}], "filter": {"orderItems": [], "filterItems": []}
Wie Sie in Json String sehen können, habe ich eine ID mit dem Wert 1374044905885298000, aber als das Objekt aus dem String serialisiert wurde, habe ich 1.374044905885298011E18
Und das Problem ist, was diese Darstellung von Long verlor die letzten Nullen 0000 und ich habe Long 1374044905885297920
Warum? und wie kann man das beheben?
Daten in Array sind String-Zuordnungen, und es sind bereits alle Long-ID-Double-Formate.
Ich versuche, den Adapter für Long oder Double zu registrieren, aber er wird nie ausgelöst.
Version von Gson 2.2.4
AKTUALISIEREN
Es ist kein Duplikat der Frage