From 80953219bda3eeac4da5a7ee7ac6ad9497ea8e38 Mon Sep 17 00:00:00 2001 From: Serj Lotutovici Date: Thu, 17 Sep 2015 09:46:00 +0200 Subject: [PATCH] ObjectJsonAdapter should not fail on null values. Closes #79 --- .../java/com/squareup/moshi/StandardJsonAdapters.java | 3 +++ .../java/com/squareup/moshi/ObjectAdapterTest.java | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/moshi/src/main/java/com/squareup/moshi/StandardJsonAdapters.java b/moshi/src/main/java/com/squareup/moshi/StandardJsonAdapters.java index 9283680..7e9c763 100644 --- a/moshi/src/main/java/com/squareup/moshi/StandardJsonAdapters.java +++ b/moshi/src/main/java/com/squareup/moshi/StandardJsonAdapters.java @@ -239,6 +239,9 @@ final class StandardJsonAdapters { case BOOLEAN: return reader.nextBoolean(); + case NULL: + return reader.nextNull(); + default: throw new IllegalStateException("Expected a value but was " + reader.peek() + " at path " + reader.getPath()); diff --git a/moshi/src/test/java/com/squareup/moshi/ObjectAdapterTest.java b/moshi/src/test/java/com/squareup/moshi/ObjectAdapterTest.java index eea2669..d85daad 100644 --- a/moshi/src/test/java/com/squareup/moshi/ObjectAdapterTest.java +++ b/moshi/src/test/java/com/squareup/moshi/ObjectAdapterTest.java @@ -84,6 +84,17 @@ public final class ObjectAdapterTest { assertThat(adapter.fromJson("[0, 1]")).isEqualTo(Arrays.asList(0d, 1d)); } + @Test public void fromJsonDoesNotFailOnNullValues() throws Exception { + Map emptyDelivery = new LinkedHashMap<>(); + emptyDelivery.put("address", null); + emptyDelivery.put("items", null); + + Moshi moshi = new Moshi.Builder().build(); + JsonAdapter adapter = moshi.adapter(Object.class); + assertThat(adapter.fromJson("{\"address\":null, \"items\":null}")) + .isEqualTo(emptyDelivery); + } + @Test public void toJsonCoercesRuntimeTypeForCollections() throws Exception { Collection collection = new AbstractCollection() { @Override public Iterator iterator() {