Make JsonElement TypeAdapterFactory a type hierarchy factory.

This commit is contained in:
Joel Leitch 2012-12-20 07:57:17 +00:00
parent b4d51db776
commit 6d90f0d894
2 changed files with 19 additions and 9 deletions

View File

@ -703,7 +703,7 @@ public final class TypeAdapters {
};
public static final TypeAdapterFactory JSON_ELEMENT_FACTORY
= newFactory(JsonElement.class, JSON_ELEMENT);
= newTypeHierarchyFactory(JsonElement.class, JSON_ELEMENT);
private static final class EnumTypeAdapter<T extends Enum<T>> extends TypeAdapter<T> {
private final Map<String, T> nameToConstant = new HashMap<String, T>();

View File

@ -554,17 +554,23 @@ public class DefaultTypeAdaptersTest extends TestCase {
public void testJsonPrimitiveDeserialization() {
assertEquals(new JsonPrimitive(5), gson.fromJson("5", JsonElement.class));
assertEquals(new JsonPrimitive(5), gson.fromJson("5", JsonPrimitive.class));
assertEquals(new JsonPrimitive(true), gson.fromJson("true", JsonElement.class));
assertEquals(new JsonPrimitive(true), gson.fromJson("true", JsonPrimitive.class));
assertEquals(new JsonPrimitive("foo"), gson.fromJson("\"foo\"", JsonElement.class));
assertEquals(new JsonPrimitive("foo"), gson.fromJson("\"foo\"", JsonPrimitive.class));
assertEquals(new JsonPrimitive('a'), gson.fromJson("\"a\"", JsonElement.class));
assertEquals(new JsonPrimitive('a'), gson.fromJson("\"a\"", JsonPrimitive.class));
}
public void testJsonNullSerialization() {
assertEquals("null", gson.toJson(JsonNull.INSTANCE, JsonElement.class));
assertEquals("null", gson.toJson(JsonNull.INSTANCE, JsonNull.class));
}
public void testNullJsonElementSerialization() {
assertEquals("null", gson.toJson(null, JsonElement.class));
assertEquals("null", gson.toJson(null, JsonNull.class));
}
public void testJsonArraySerialization() {
@ -575,12 +581,15 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals("[1,2,3]", gson.toJson(array, JsonElement.class));
}
public void testJsonArrayDeerialization() {
public void testJsonArrayDeserialization() {
JsonArray array = new JsonArray();
array.add(new JsonPrimitive(1));
array.add(new JsonPrimitive(2));
array.add(new JsonPrimitive(3));
assertEquals(array, gson.fromJson("[1,2,3]", JsonElement.class));
String json = "[1,2,3]";
assertEquals(array, gson.fromJson(json, JsonElement.class));
assertEquals(array, gson.fromJson(json, JsonArray.class));
}
public void testJsonObjectSerialization() {
@ -595,16 +604,17 @@ public class DefaultTypeAdaptersTest extends TestCase {
object.add("foo", new JsonPrimitive(1));
object.add("bar", new JsonPrimitive(2));
JsonElement actual = gson.fromJson("{\"foo\":1,\"bar\":2}", JsonElement.class);
String json = "{\"foo\":1,\"bar\":2}";
JsonElement actual = gson.fromJson(json, JsonElement.class);
assertEquals(object, actual);
JsonObject actualObj = gson.fromJson(json, JsonObject.class);
assertEquals(object, actualObj);
}
public void testJsonNullDeerialization() {
assertEquals(JsonNull.INSTANCE, gson.fromJson("null", JsonElement.class));
}
public void testNullJsonElementDeserialization() {
public void testJsonNullDeserialization() {
assertEquals(JsonNull.INSTANCE, gson.fromJson("null", JsonElement.class));
assertEquals(JsonNull.INSTANCE, gson.fromJson("null", JsonNull.class));
}
private static class ClassWithBigDecimal {