Gson Long perdió datos al analizar desde String

Tengo json representación de la cadena de algunos objetos de clase de objeto es

public class SMPBBaseObjectsList {

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

Y tengo json

{"classItem": "smpb.utility.classes.SMPBBaseObjectsList", "dataItemsClass": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013", "data": [{"id": 13740461110100000 " Nombre ":" Test3 "," classItem ":" smpb.base.classes.SMPBUser "," dataSliceCode ":" 012013 "}]," filter ": {" orderItems ": []," filterItems ": []} }

Intento analizar este json y crear un objeto de mi clase con el siguiente 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);

Salidas del sistema:

ANTES DE:{"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": [ ]}}

DESPUÉS: {"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": []}}

Como se puede ver en Json String, tengo un ID con un valor 1374044905885298000, pero cuando el objeto se serializó desde la cadena, obtuve 1.374044905885298011E18

Y el problema es que esta representación de Long perdió los últimos ceros 0000 y obtuve Long 1374044905885297920

¿Por qué? y como arreglarlo?

Los datos en Array es un mapa de cadenas, y ya está todo en formato Long ID doble.

Intento registerAdapater para Long o Double pero nunca se activa.

Versión de Gson 2.2.4

ACTUALIZAR

No es duplicado de pregunta.

¿Cómo evitar que Gson convierta un número largo (una cadena json) al formato de notación científica?

Respuestas a la pregunta(1)

Su respuesta a la pregunta