Gson Long perdeu dados quando analisou a String

Eu tenho representações string json de alguns objetos de classe de objeto é

public class SMPBBaseObjectsList {

    public ArrayList<Object> data = new ArrayList<>();
    public Integer count;
    public Integer limitFrom;
    public Integer limitTo;
    public Boolean hasMore;
    public String dataItemsClass;
}

E eu tenho json

{"classItem": "smpb.utility.classes.SMPBBaseObjectsList", "dataItemsClass": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013", "data": [{"id": 1374046117510970000, " Nome ":" Test3 "," classItem ":" smpb.base.classes.SMPBUser "," dataSliceCode ":" 012013 "}]," filtro ": {" orderItems ": []," filterItems ": []} }

Eu tento analisar esse json e criar objeto da minha classe com o próximo código:

 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);

Saídas do sistema:

ANTES:{"classItem": "smpb.utility.classes.SMPBBaseObjectsList", "dataItemsClass": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013", "data": [{"id": 1374044905885298000, "Name": "Test3", "classItem": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013"}], "filtro": {"orderItems": [], "filterItems": [ ]}}

DEPOIS DE: {"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"}], "filtro": {"orderItems": [], "filterItems": []}}

Como você pode ver no Json String eu tenho ID com o valor 1374044905885298000, mas quando o objeto serializado da cadeia eu tenho 1.374044905885298011E18

E o problema é o que esta representação de Long perdeu últimos zeros 0000 e eu tenho longa 1374044905885297920

Por quê? e como consertar isso?

Data in Array é o mapa String e já é todo o formato Long id.

Eu tento registrarAdapater para Long ou Double, mas nunca acionado.

Versão do Gson 2.2.4

ATUALIZAR

Não é duplicado de pergunta

Como evitar que o Gson converta um número longo (uma string json) em um formato de notação científica?

questionAnswers(1)

yourAnswerToTheQuestion