Repository: johnzon Updated Branches: refs/heads/master 4e8b6524a -> 2845dd882
JOHNZON-169 add unit test for @JsonbTypeDeserializer on list Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/29af5fb2 Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/29af5fb2 Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/29af5fb2 Branch: refs/heads/master Commit: 29af5fb25f3bb2be6685b009df751e86152f62a1 Parents: 4e8b652 Author: Mark Struberg <[email protected]> Authored: Wed Aug 29 15:24:03 2018 +0200 Committer: Mark Struberg <[email protected]> Committed: Wed Aug 29 15:24:03 2018 +0200 ---------------------------------------------------------------------- .../apache/johnzon/jsonb/SerializerTest.java | 66 +++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/29af5fb2/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/SerializerTest.java ---------------------------------------------------------------------- diff --git a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/SerializerTest.java b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/SerializerTest.java index a6771ef..bf704e9 100644 --- a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/SerializerTest.java +++ b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/SerializerTest.java @@ -35,10 +35,11 @@ import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -// TODO: enhance public class SerializerTest { + @Test public void roundTrip() { final Jsonb jsonb = JsonbBuilder.create(); @@ -120,4 +121,67 @@ public class SerializerTest { generator.write("name", obj.name); } } + + /** + * see JOHNZON-169 + */ + @Test + public void testArrayParseWithDeserializer() { + String json = "{\"student\":[{\"val\":\"max,24\"}]}"; + Jsonb jsonb = JsonbBuilder.create(); + + StudentHolder studentHolder = jsonb.fromJson(json, StudentHolder.class); + assertNotNull(studentHolder); + assertNotNull(studentHolder.getStudent()); + assertEquals(1, studentHolder.getStudent().size()); + assertEquals("max", studentHolder.getStudent().get(0).getName()); + assertEquals(24, studentHolder.getStudent().get(0).getAge()); + } + + public static class Student { + private String name; + private int age; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + } + + public static class StudentDeserializer implements JsonbDeserializer<Student> { + @Override + public Student deserialize(JsonParser parser, DeserializationContext ctx, Type rtType) { + String val = parser.getObject().getString("val"); + String[] parts = val.split(","); + Student s = new Student(); + s.setName(parts[0]); + s.setAge(Integer.parseInt(parts[1])); + + return s; + } + } + + public static class StudentHolder { + @JsonbTypeDeserializer(StudentDeserializer.class) + private List<Student> student; + + public List<Student> getStudent() { + return student; + } + + public void setStudent(List<Student> student) { + this.student = student; + } + } }
