Allow booleans and number to be deserialized into a "String" field/object.

This commit is contained in:
Joel Leitch 2008-12-14 04:42:16 +00:00
parent 0b5f3dc825
commit ea79cd6812
2 changed files with 17 additions and 1 deletions

View File

@ -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;
}
}
/**

View File

@ -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);
}
}