Как я могу предотвратить преобразование целых чисел в двойные числа?

В моем 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}

Редактировать: не все мои поля являются целыми. Я изменил свой пример соответственно. Я прочитал довольно много примеров в Интернете, включая некоторые ответы на этом сайте, но в данном конкретном случае это не работает.

Ответы на вопрос(5)

Ваш ответ на вопрос