From 7e1e4eab07b685cc77db643388b9d73eb0b0e1bb Mon Sep 17 00:00:00 2001 From: Jesse Wilson Date: Sat, 28 Aug 2010 05:02:33 +0000 Subject: [PATCH] Remove the constraint that map keys mustn't be the empty string. See bug 227. --- .../main/java/com/google/gson/JsonObject.java | 2 +- .../java/com/google/gson/JsonObjectTest.java | 16 ++++++++++++++++ .../java/com/google/gson/functional/MapTest.java | 15 +++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/gson/src/main/java/com/google/gson/JsonObject.java b/gson/src/main/java/com/google/gson/JsonObject.java index 62c04343..11f78cdc 100644 --- a/gson/src/main/java/com/google/gson/JsonObject.java +++ b/gson/src/main/java/com/google/gson/JsonObject.java @@ -52,7 +52,7 @@ public final class JsonObject extends JsonElement { * @param value the member object. */ public void add(String property, JsonElement value) { - Preconditions.checkArgument(property != null && !"".equals(property.trim())); + Preconditions.checkArgument(property != null); if (value == null) { value = JsonNull.createJsonNull(); } diff --git a/gson/src/test/java/com/google/gson/JsonObjectTest.java b/gson/src/test/java/com/google/gson/JsonObjectTest.java index 7ab8b8c5..6573df46 100644 --- a/gson/src/test/java/com/google/gson/JsonObjectTest.java +++ b/gson/src/test/java/com/google/gson/JsonObjectTest.java @@ -120,4 +120,20 @@ public class JsonObjectTest extends TestCase { String json = new Gson().toJson(jsonObj); assertEquals("{\"a\\\"b\":\"c\\\"d\"}", json); } + + /** + * From issue 227. + */ + public void testWritePropertyWithEmptyStringName() { + JsonObject jsonObj = new JsonObject(); + jsonObj.add("", new JsonPrimitive(true)); + assertEquals("{\"\":true}", new Gson().toJson(jsonObj)); + + } + + public void testReadPropertyWithEmptyStringName() { + JsonObject jsonObj = new JsonParser().parse("{\"\":true}").getAsJsonObject(); + assertEquals(true, jsonObj.get("").getAsBoolean()); + + } } diff --git a/gson/src/test/java/com/google/gson/functional/MapTest.java b/gson/src/test/java/com/google/gson/functional/MapTest.java index 7e76feab..82c6c1b1 100755 --- a/gson/src/test/java/com/google/gson/functional/MapTest.java +++ b/gson/src/test/java/com/google/gson/functional/MapTest.java @@ -297,4 +297,19 @@ public class MapTest extends TestCase { String json = gson.toJson(map); assertEquals("{\"a\\\"b\":\"c\\\"d\"}", json); } + + /** + * From issue 227. + */ + public void testWriteMapsWithEmptyStringKey() { + Map map = new HashMap(); + map.put("", true); + assertEquals("{\"\":true}", gson.toJson(map)); + + } + + public void testReadMapsWithEmptyStringKey() { + Map map = gson.fromJson("{\"\":true}", new TypeToken>() {}.getType()); + assertEquals(Boolean.TRUE, map.get("")); + } }