From ea79cd6812bc2a81fdbbf9143d7aa0beec65ffd9 Mon Sep 17 00:00:00 2001 From: Joel Leitch Date: Sun, 14 Dec 2008 04:42:16 +0000 Subject: [PATCH] Allow booleans and number to be deserialized into a "String" field/object. --- gson/src/main/java/com/google/gson/JsonPrimitive.java | 8 +++++++- .../java/com/google/gson/functional/ObjectTest.java | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gson/src/main/java/com/google/gson/JsonPrimitive.java b/gson/src/main/java/com/google/gson/JsonPrimitive.java index e8b73708..a18ca799 100644 --- a/gson/src/main/java/com/google/gson/JsonPrimitive.java +++ b/gson/src/main/java/com/google/gson/JsonPrimitive.java @@ -166,7 +166,13 @@ public final class JsonPrimitive extends JsonElement { */ @Override public String getAsString() { - return (String) value; + if (isNumber()) { + return getAsNumber().toString(); + } else if (isBoolean()) { + return getAsBooleanWrapper().toString(); + } else { + return (String) value; + } } /** diff --git a/gson/src/test/java/com/google/gson/functional/ObjectTest.java b/gson/src/test/java/com/google/gson/functional/ObjectTest.java index cc2d142e..ce7aa072 100644 --- a/gson/src/test/java/com/google/gson/functional/ObjectTest.java +++ b/gson/src/test/java/com/google/gson/functional/ObjectTest.java @@ -542,4 +542,14 @@ public class ObjectTest extends TestCase { assertTrue(bag.booleanValue); assertEquals("bar", bag.stringValue); } + + public void testStringFieldWithNumberValueDeserialization() { + String json = "{\"stringValue\":1}"; + BagOfPrimitives bag = gson.fromJson(json, BagOfPrimitives.class); + assertEquals("1", bag.stringValue); + + json = "{\"stringValue\":true}"; + bag = gson.fromJson(json, BagOfPrimitives.class); + assertEquals("true", bag.stringValue); + } }