Gson długo tracił dane, gdy analizował łańcuch
Mam reprezentację ciągu jsonów niektórych obiektów klas obiektów
public class SMPBBaseObjectsList {
public ArrayList<Object> data = new ArrayList<>();
public Integer count;
public Integer limitFrom;
public Integer limitTo;
public Boolean hasMore;
public String dataItemsClass;
}
I mam jsona
{"classItem": "smpb.utility.classes.SMPBBaseObjectsList", "dataItemsClass": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013", "data": [{"id": 1374046117510970000, " Nazwa „:„ Test3 ”,„ classItem ”:„ smpb.base.classes.SMPBUser ”,„ dataSliceCode ”:„ 012013 ”}],„ filter ”: {„ orderItems ”: [],„ filterItems ”: []} }
Próbuję przeanalizować ten json i utworzyć obiekt mojej klasy następnym kodem:
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);
Wyjścia systemowe:
PRZED:{"classItem": "smpb.utility.classes.SMPBBaseObjectsList", "dataItemsClass": "smpb.base.classes.SMPBUser", "dataSliceCode": "012013", "data": [{„id”: 1374044905885298000, „Nazwa”: „Test3”, „classItem”: „smpb.base.classes.SMPBUser”, „dataSliceCode”: „012013”}], „filter”: {„orderItems”: [], „filterItems”: [ ]}}
PO: {"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": []}}
Jak widać w Json String mam identyfikator o wartości 1374044905885298000, ale gdy obiekt serializowany z łańcucha otrzymałem 1.374044905885298011E18
I problem polega na tym, że ta reprezentacja Long lost ostatniego zera 0000 i mam Long 1374044905885297920
Czemu? i jak to naprawić?
Dane w Array to mapa String, a to już wszystko w formacie Double Id Double.
Próbuję zarejestrowaćAdapater dla Long lub Double, ale nigdy nie został uruchomiony.
Wersja Gson 2.2.4
AKTUALIZACJA
To nie jest duplikat pytania
Jak uniemożliwić Gsonowi konwersję długiego numeru (ciągu json) do formatu notacji naukowej?