From c00ef532c96255a472e919141ba1dd802799dbab Mon Sep 17 00:00:00 2001 From: eugenp Date: Sat, 23 Aug 2014 13:26:09 +0300 Subject: [PATCH] gson work --- .../baeldung/gson/deserialization/Foo.java | 4 ++ .../gson/deserialization/GenericFoo.java | 12 ++--- .../test/GsonDeserializationTest.java | 54 +++++++++++-------- 3 files changed, 41 insertions(+), 29 deletions(-) diff --git a/gson/src/test/java/org/baeldung/gson/deserialization/Foo.java b/gson/src/test/java/org/baeldung/gson/deserialization/Foo.java index 1663fd6fa6..64720f63f9 100644 --- a/gson/src/test/java/org/baeldung/gson/deserialization/Foo.java +++ b/gson/src/test/java/org/baeldung/gson/deserialization/Foo.java @@ -9,6 +9,10 @@ public class Foo { this.stringValue = stringValue; } + public Foo() { + super(); + } + // API @Override diff --git a/gson/src/test/java/org/baeldung/gson/deserialization/GenericFoo.java b/gson/src/test/java/org/baeldung/gson/deserialization/GenericFoo.java index 0ab4d18da2..954cf007cf 100644 --- a/gson/src/test/java/org/baeldung/gson/deserialization/GenericFoo.java +++ b/gson/src/test/java/org/baeldung/gson/deserialization/GenericFoo.java @@ -1,18 +1,18 @@ package org.baeldung.gson.deserialization; -public class GenericFoo { +public class GenericFoo { - public INTEGER intField; + public T theValue; - GenericFoo(final INTEGER value) { - intField = value; + public GenericFoo(final T value) { + theValue = value; } // @Override - public String toString() { - return "GenericTargetClass{" + "intField=" + intField + '}'; + public final String toString() { + return "GenericTargetClass{" + "intField=" + theValue + '}'; } } diff --git a/gson/src/test/java/org/baeldung/gson/deserialization/test/GsonDeserializationTest.java b/gson/src/test/java/org/baeldung/gson/deserialization/test/GsonDeserializationTest.java index 3868790f96..342b3096d7 100644 --- a/gson/src/test/java/org/baeldung/gson/deserialization/test/GsonDeserializationTest.java +++ b/gson/src/test/java/org/baeldung/gson/deserialization/test/GsonDeserializationTest.java @@ -8,15 +8,14 @@ import static org.junit.Assert.assertThat; import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; -import java.util.List; import org.baeldung.gson.deserialization.Foo; import org.baeldung.gson.deserialization.FooDeserializerFromJsonWithDifferentFields; import org.baeldung.gson.deserialization.GenericFoo; import org.junit.Test; +import com.google.common.collect.Lists; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; @@ -29,57 +28,66 @@ public class GsonDeserializationTest { // tests - single element @Test - public final void givenJsonHasExtraValuesButGsonIsIgnoringExtras_whenDeserializing_thenCorrect() { - final String serializedSourceObject = "{\"intValue\":1,\"stringValue\":\"one\",\"extraString\":\"two\",\"extraFloat\":2.2}"; - final Foo targetObject = new Gson().fromJson(serializedSourceObject, Foo.class); + public final void whenDeserializingToSimpleObject_thenCorrect() { + final String json = "{\"intValue\":1,\"stringValue\":\"one\"}"; + + final Foo targetObject = new Gson().fromJson(json, Foo.class); assertEquals(targetObject.intValue, 1); assertEquals(targetObject.stringValue, "one"); } @Test - public final void givenJsonHasNonMatchingFieldNames_whenDeserializingWithCustomDeserializer_thenCorrect() { - final String jsonSourceObject = "{\"valueInt\":7,\"valueString\":\"seven\"}"; + public final void givenJsonHasExtraValues_whenDeserializing_thenCorrect() { + final String json = "{\"intValue\":1,\"stringValue\":\"one\",\"extraString\":\"two\",\"extraFloat\":2.2}"; + final Foo targetObject = new Gson().fromJson(json, Foo.class); + + assertEquals(targetObject.intValue, 1); + assertEquals(targetObject.stringValue, "one"); + } + + @Test + public final void givenJsonHasNonMatchingFields_whenDeserializingWithCustomDeserializer_thenCorrect() { + final String json = "{\"valueInt\":7,\"valueString\":\"seven\"}"; final GsonBuilder gsonBldr = new GsonBuilder(); gsonBldr.registerTypeAdapter(Foo.class, new FooDeserializerFromJsonWithDifferentFields()); - final Foo targetObject = gsonBldr.create().fromJson(jsonSourceObject, Foo.class); + final Foo targetObject = gsonBldr.create().fromJson(json, Foo.class); assertEquals(targetObject.intValue, 7); assertEquals(targetObject.stringValue, "seven"); } @Test - public final void givenUsingGson_whenDeserializingGeneric_thenCorrect() { - final Type genericTargetClassType = new TypeToken>() { + public final void whenDeserializingToGenericObject_thenCorrect() { + final Type typeToken = new TypeToken>() { }.getType(); - final String serializedSourceObject = "{\"intField\":1}"; + final String json = "{\"theValue\":1}"; - final GenericFoo targetObject = new Gson().fromJson(serializedSourceObject, genericTargetClassType); + final GenericFoo targetObject = new Gson().fromJson(json, typeToken); - assertEquals(targetObject.intField, new Integer(1)); + assertEquals(targetObject.theValue, new Integer(1)); } // tests - multiple elements @Test - public final void givenJsonArrayOfFoos_whenDeserializingToList_thenCorrect() { - final String jsonSourceObject = "[{\"intValue\":1,\"stringValue\":\"one\"},{\"intValue\":2,\"stringValue\":\"two\"}]"; - final Foo[] objectsAsArray = new GsonBuilder().create().fromJson(jsonSourceObject, Foo[].class); - final List targetList = Arrays.asList(objectsAsArray); + public final void givenJsonArrayOfFoos_whenDeserializingToArray_thenCorrect() { + final String json = "[{\"intValue\":1,\"stringValue\":\"one\"}," + "{\"intValue\":2,\"stringValue\":\"two\"}]"; + final Foo[] targetArray = new GsonBuilder().create().fromJson(json, Foo[].class); - assertThat(targetList, hasItem(new Foo(1, "one"))); - assertThat(targetList, hasItem(new Foo(2, "two"))); - assertThat(targetList, not(hasItem(new Foo(1, "two")))); + assertThat(Lists.newArrayList(targetArray), hasItem(new Foo(1, "one"))); + assertThat(Lists.newArrayList(targetArray), hasItem(new Foo(2, "two"))); + assertThat(Lists.newArrayList(targetArray), not(hasItem(new Foo(1, "two")))); } @Test - public final void givenUsingGson_whenDeserializingCollection_thenCorrect() { - final String serializedSourceCollection = "[{\"intValue\":1,\"stringValue\":\"one\"},{\"intValue\":2,\"stringValue\":\"two\"}]"; + public final void givenJsonArrayOfFoos_whenDeserializingCollection_thenCorrect() { + final String json = "[{\"intValue\":1,\"stringValue\":\"one\"},{\"intValue\":2,\"stringValue\":\"two\"}]"; final Type targetClassType = new TypeToken>() { }.getType(); - final Collection targetCollection = new Gson().fromJson(serializedSourceCollection, targetClassType); + final Collection targetCollection = new Gson().fromJson(json, targetClassType); assertThat(targetCollection, instanceOf(ArrayList.class)); }