Как я могу предотвратить преобразование целых чисел в двойные числа?
В моем json есть целые числа, и я не хочу, чтобы gson конвертировал их в двойные числа. Следующее не работает:
@Test
public void keepsIntsAsIs(){
String json="[{\"id\":1,\"quantity\":2,\"name\":\"apple\"},{\"id\":3,\"quantity\":4,\"name\":\"orange\"}]";
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Double.class, new DoubleSerializerAsInt());
Gson gson = gsonBuilder.create();
List<Map<String, Object>> l = gson.fromJson(json, List.class);
for(Map<String, Object> item : l){
System.out.println(item);
}
}
private static class DoubleSerializerAsInt implements JsonSerializer<Double>{
@Override
public JsonElement serialize(Double aDouble, Type type, JsonSerializationContext jsonSerializationContext) {
int value = (int)Math.round(aDouble);
return new JsonPrimitive(value);
}
}
Выход не то, что я хочу:
{id=1.0, quantity=2.0, name=apple}
{id=3.0, quantity=4.0, name=orange}
Есть ли способ иметь целые числа вместо двойных на моей карте?
{id=1, quantity=2, name=apple}
{id=3, quantity=4, name=orange}
Редактировать: не все мои поля являются целыми. Я изменил свой пример соответственно. Я прочитал довольно много примеров в Интернете, включая некоторые ответы на этом сайте, но в данном конкретном случае это не работает.