У меня есть целые числа в моем 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}
Изменить: не все мои поля целые. Я соответствующим образом изменил свой пример. Я прочитал несколько примеров онлайн, включая некоторые ответы на этом сайте, но в этом конкретном случае это не работает.