diff --git a/gson/src/main/java/com/google/gson/annotations/JsonAdapter.java b/gson/src/main/java/com/google/gson/annotations/JsonAdapter.java index 2ee3e682..a98b27a1 100644 --- a/gson/src/main/java/com/google/gson/annotations/JsonAdapter.java +++ b/gson/src/main/java/com/google/gson/annotations/JsonAdapter.java @@ -94,4 +94,7 @@ public @interface JsonAdapter { /** Either a {@link TypeAdapter} or {@link TypeAdapterFactory}. */ Class value(); + /** false, to be able to handle {@code null} values within the adapter, default value is true. */ + boolean nullSafe() default true; + } diff --git a/gson/src/main/java/com/google/gson/internal/bind/JsonAdapterAnnotationTypeAdapterFactory.java b/gson/src/main/java/com/google/gson/internal/bind/JsonAdapterAnnotationTypeAdapterFactory.java index c079b64d..7cfb910a 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/JsonAdapterAnnotationTypeAdapterFactory.java +++ b/gson/src/main/java/com/google/gson/internal/bind/JsonAdapterAnnotationTypeAdapterFactory.java @@ -73,7 +73,7 @@ public final class JsonAdapterAnnotationTypeAdapterFactory implements TypeAdapte + "JsonSerializer or JsonDeserializer reference."); } - if (typeAdapter != null) { + if (typeAdapter != null && annotation.nullSafe()) { typeAdapter = typeAdapter.nullSafe(); }