From 933a3e515021e9d3dea4a18326479a42df353494 Mon Sep 17 00:00:00 2001 From: Joel Leitch Date: Tue, 29 Sep 2009 20:34:35 +0000 Subject: [PATCH] Allow serialization of nulls in a "List" type. --- .../java/com/google/gson/DefaultTypeAdapters.java | 12 ++++++++---- .../com/google/gson/functional/CollectionTest.java | 11 +++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/gson/src/main/java/com/google/gson/DefaultTypeAdapters.java b/gson/src/main/java/com/google/gson/DefaultTypeAdapters.java index 60db44d8..fd0d874e 100644 --- a/gson/src/main/java/com/google/gson/DefaultTypeAdapters.java +++ b/gson/src/main/java/com/google/gson/DefaultTypeAdapters.java @@ -443,10 +443,14 @@ final class DefaultTypeAdapters { childGenericType = new TypeInfoCollection(typeOfSrc).getElementType(); } for (Object child : src) { - Type childType = (childGenericType == null || childGenericType == Object.class) - ? child.getClass() : childGenericType; - JsonElement element = context.serialize(child, childType); - array.add(element); + if (child == null) { + array.add(JsonNull.createJsonNull()); + } else { + Type childType = (childGenericType == null || childGenericType == Object.class) + ? child.getClass() : childGenericType; + JsonElement element = context.serialize(child, childType); + array.add(element); + } } return array; } diff --git a/gson/src/test/java/com/google/gson/functional/CollectionTest.java b/gson/src/test/java/com/google/gson/functional/CollectionTest.java index d43d4ce2..9889c050 100644 --- a/gson/src/test/java/com/google/gson/functional/CollectionTest.java +++ b/gson/src/test/java/com/google/gson/functional/CollectionTest.java @@ -153,6 +153,17 @@ public class CollectionTest extends TestCase { Type type = new TypeToken>() {}.getType(); assertEquals("[\"Hello\",\"World\"]", gson.toJson(target, type)); } + + public void testCollectionOfObjectWithNullSerialization() { + List target = new ArrayList(); + target.add("Hello"); + target.add(null); + target.add("World"); + assertEquals("[\"Hello\",null,\"World\"]", gson.toJson(target)); + + Type type = new TypeToken>() {}.getType(); + assertEquals("[\"Hello\",null,\"World\"]", gson.toJson(target, type)); + } public void testCollectionOfStringsSerialization() { List target = new ArrayList();