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

Wie kann ich verhindern, dass Gson eine lange Zahl (eine JSON-Zeichenfolge) in ein wissenschaftliches Notationsformat konvertiert?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage