Wie kann ich verhindern, dass gson ganze Zahlen in doppelte konvertiert?

Ich habe ganze Zahlen in meinem JSON und möchte nicht, dass GSON sie in Double umwandelt. Folgendes funktioniert nicht:

@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);
    }
}

Die Ausgabe ist nicht das, was ich will:

{id=1.0, quantity=2.0, name=apple}
{id=3.0, quantity=4.0, name=orange}

Gibt es eine Möglichkeit, in meiner Map Ganzzahlen anstelle von Doppelwerten zu verwenden?

{id=1, quantity=2, name=apple}
{id=3, quantity=4, name=orange}

Bearbeiten Nicht alle meine Felder sind Ganzzahlen. Ich habe mein Beispiel entsprechend modifiziert. Ich habe einige Beispiele online gelesen, einschließlich einiger Antworten auf dieser Website, aber in diesem speziellen Fall funktioniert das nicht.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage