@BeforeEach @SuppressWarnings({"unchecked"}) void setUp() { DataCreator dataCreator = new DataCreator(); pedroZip = new Zipcode("848485"); Person pedro = dataCreator.createPedro(); jodder = dataCreator.createJodder(); modesty = dataCreator.createModesty(); colors = dataCreator.createColorMap(); people = new ArrayList(); people.add(jodder); people.add(modesty); people.add(pedro); dilbert = dataCreator.createDilbert(); network = dataCreator.createNetwork("My Network", jodder, modesty); }
public Villian createLexLuthor() { return new Villian("Lex Luthor", createSuperman(), new SecretLair("Legion of Doom")); }
@Test void testListDeserializationNoClass2() { JsonParsers.forEachParser(jsonParser -> { Person modesty = creator.createModesty(); Person igor = creator.createJodder(); Person pedro = creator.createPedro(); List<Person> list = new ArrayList<>(3); list.add(modesty); list.add(igor); list.add(pedro); String json = new JsonSerializer().serialize(list); List<Person> people = jsonParser.map("values", Person.class).parse(json); assertEquals(3, list.size()); assertEquals(modesty.getFirstname(), list.get(0).getFirstname()); assertEquals(igor.getFirstname(), list.get(1).getFirstname()); assertEquals(pedro.getFirstname(), list.get(2).getFirstname()); }); }
@Test void testArray() { JsonParsers.forEachParser(jsonParser -> { Person[] p = new Person[3]; p[0] = creator.createJodder(); p[1] = creator.createDilbert(); p[2] = creator.createModesty(); String json = new JsonSerializer().serialize(p); Person[] jsonP = jsonParser.parse(json, Person[].class); assertEquals(3, jsonP.length); assertEquals("Igor", jsonP[0].getFirstname()); assertEquals("Dilbert", jsonP[1].getFirstname()); assertEquals("Modesty", jsonP[2].getFirstname()); }); }
@Test void testGenericTypeDeserialization2() { JsonParsers.forEachParser(jsonParser -> { Pair<Hero, Villian> archenemies = new Pair<>(creator.createSuperman(), creator.createLexLuthor()); String json = new JsonSerializer() .serialize(archenemies); Pair<Hero, Villian> deserialArchEnemies = jsonParser .map("first", Hero.class) .map("second", Villian.class) .parse(json, Pair.class); assertEquals(archenemies.getFirst().getClass(), deserialArchEnemies.getFirst().getClass()); assertEquals(archenemies.getSecond().getClass(), deserialArchEnemies.getSecond().getClass()); assertEquals(archenemies.getFirst().getIdentity(), deserialArchEnemies.getFirst().getIdentity()); assertEquals(archenemies.getFirst().getLair(), deserialArchEnemies.getFirst().getLair()); assertEquals(archenemies.getFirst().getName(), deserialArchEnemies.getFirst().getName()); assertEquals(archenemies.getSecond().getName(), deserialArchEnemies.getSecond().getName()); assertEquals(archenemies.getSecond().getLair(), deserialArchEnemies.getSecond().getLair()); }); }
@Test void testConvertPersonToMap() { Person jodder = new DataCreator().createJodder(); final Map<String, Object> target = new HashMap<>(); JsonContext jsonContext = new JsonSerializer().createJsonContext(null); BeanSerializer beanSerializer = new BeanSerializer(jsonContext, jodder) { @Override protected void onSerializableProperty(String propertyName, Class propertyType, Object value) { target.put(propertyName, value); } }; beanSerializer.serialize(); assertEquals(6, target.size()); assertSame(jodder.getBirthdate(), target.get("birthdate")); assertSame(jodder.getFirstBaseBallGame(), target.get("firstBaseBallGame")); assertSame(jodder.getLastname(), target.get("lastname")); assertSame(jodder.getFirstname(), target.get("firstname")); assertSame(jodder.getHome(), target.get("home")); assertSame(jodder.getWork(), target.get("work")); }
@Test void testGeneralMapDeserialization2() { JsonParsers.forEachParser(jsonParser -> { String json = new JsonSerializer().serialize(creator.createJodder()); Map<String, Object> deserialized = jsonParser.parse(json); assertEquals("Igor", deserialized.get("firstname")); assertEquals("Spasic", deserialized.get("lastname")); assertTrue(Map.class.isAssignableFrom(deserialized.get("work").getClass())); assertTrue(Map.class.isAssignableFrom(deserialized.get("home").getClass())); }); }
@Test void testArrayType() { JsonParsers.forEachParser(jsonParser -> { Person igor = creator.createJodder(); Person modesty = creator.createModesty(); Group group = new Group("brothers", igor, modesty); String json = new JsonSerializer().include("people").exclude("*.class").serialize(group); Group bro = jsonParser.map(Group.class).parse(json); assertNotNull(bro); assertEquals("brothers", bro.getGroupName()); assertEquals(2, bro.getPeople().length); assertEquals("Igor", bro.getPeople()[0].getFirstname()); assertEquals("Modesty", bro.getPeople()[1].getFirstname()); }); }
@BeforeEach void setUp() { creator = new DataCreator(); }
@Test void testSubClassDeserialize() { JsonParsers.forEachParser(jsonParser -> { Employee dilbert = creator.createDilbert(); String json = new JsonSerializer().include("phones", "hobbies").serialize(dilbert); Person jsonDilbert = jsonParser.parse(json, Employee.class); assertNotNull(jsonDilbert); assertTrue(jsonDilbert instanceof Employee); assertEquals(dilbert.getCompany(), ((Employee) jsonDilbert).getCompany()); }); }
@Test void testListDeserializationNoClass() { JsonParser.Defaults.classMetadataName = "class"; JsonSerializer.Defaults.classMetadataName = "class"; JsonParsers.forEachParser(jsonParser -> { Person modesty = creator.createModesty(); Person igor = creator.createJodder(); Person pedro = creator.createPedro(); List<Person> list = new ArrayList<>(3); list.add(modesty); list.add(igor); list.add(pedro); String json = new JsonSerializer().exclude("*.class").serialize(list); List<Person> people = jsonParser.map("values", Person.class).parse(json); assertEquals(3, list.size()); assertEquals(modesty.getFirstname(), list.get(0).getFirstname()); assertEquals(igor.getFirstname(), list.get(1).getFirstname()); assertEquals(pedro.getFirstname(), list.get(2).getFirstname()); }); }
@Test void testGenericTypeDeserialization() { JsonParser.Defaults.classMetadataName = "class"; JsonSerializer.Defaults.classMetadataName = "class"; JsonParsers.forEachParser(jsonParser -> { Pair<Hero, Villian> archenemies = new Pair<>(creator.createSuperman(), creator.createLexLuthor()); String json = new JsonSerializer() .exclude("*.class") .serialize(archenemies); Pair<Hero, Villian> deserialArchEnemies = jsonParser .map("first", Hero.class) .map("second", Villian.class) .parse(json, Pair.class); assertEquals(archenemies.getFirst().getClass(), deserialArchEnemies.getFirst().getClass()); assertEquals(archenemies.getSecond().getClass(), deserialArchEnemies.getSecond().getClass()); assertEquals(archenemies.getFirst().getIdentity(), deserialArchEnemies.getFirst().getIdentity()); assertEquals(archenemies.getFirst().getLair(), deserialArchEnemies.getFirst().getLair()); assertEquals(archenemies.getFirst().getName(), deserialArchEnemies.getFirst().getName()); assertEquals(archenemies.getSecond().getName(), deserialArchEnemies.getSecond().getName()); assertEquals(archenemies.getSecond().getLair(), deserialArchEnemies.getSecond().getLair()); }); }
@Test void testConvertPersonToMap2() { Person jodder = new DataCreator().createJodder(); final Map<String, Object> target = new HashMap<>(); JsonContext jsonContext = new JsonSerializer() .include("phones") .excludeTypes(Address.class) .createJsonContext(null); BeanSerializer beanSerializer = new BeanSerializer(jsonContext, jodder) { @Override protected void onSerializableProperty(String propertyName, Class propertyType, Object value) { target.put(propertyName, value); } }; beanSerializer.serialize(); assertEquals(5, target.size()); assertSame(jodder.getBirthdate(), target.get("birthdate")); assertSame(jodder.getFirstBaseBallGame(), target.get("firstBaseBallGame")); assertSame(jodder.getLastname(), target.get("lastname")); assertSame(jodder.getFirstname(), target.get("firstname")); assertSame(jodder.getPhones(), target.get("phones")); }
@Test void testGeneralMapDeserialization() { JsonParser.Defaults.classMetadataName = "class"; JsonSerializer.Defaults.classMetadataName = "class"; JsonParsers.forEachParser(jsonParser -> { String json = new JsonSerializer().exclude("*.class").serialize(creator.createJodder()); Map<String, Object> deserialized = jsonParser.parse(json); assertEquals("Igor", deserialized.get("firstname")); assertEquals("Spasic", deserialized.get("lastname")); assertTrue(Map.class.isAssignableFrom(deserialized.get("work").getClass())); assertTrue(Map.class.isAssignableFrom(deserialized.get("home").getClass())); }); }
@Test void testListSerialization() { JsonParser.Defaults.classMetadataName = "class"; JsonSerializer.Defaults.classMetadataName = "class"; Person modesty = creator.createModesty(); Person igor = creator.createJodder(); Person pedro = creator.createPedro(); List<Person> list = new ArrayList<>(3); list.add(modesty); list.add(igor); list.add(pedro); JsonParsers.forEachParser(jsonParser -> { String json = new JsonSerializer().serialize(list); List<Person> people = jsonParser.parse(json); assertTrue(people instanceof List); json = new JsonSerializer().exclude("*.class").serialize(list); people = jsonParser.map("values", Person.class).parse(json); assertEquals(3, people.size()); assertEquals(Person.class, people.get(0).getClass()); }); JsonParsers.forEachParser(jsonParser -> { String json = new JsonSerializer().exclude("*.class").serialize(list); List<Map> peopleMap = jsonParser.parse(json); assertEquals(3, peopleMap.size()); assertTrue(peopleMap.get(0) instanceof Map); }); }
@Test void testDeserializeInterfaces() { JsonParsers.forEachParser(jsonParser -> { Hero superman = creator.createSuperman(); String json = new JsonSerializer().include("powers").setClassMetadataName("class").serialize(superman); Hero jsonSuperMan = jsonParser.setClassMetadataName("class").parse(json, Hero.class); assertNotNull(jsonSuperMan); assertEquals(4, jsonSuperMan.getPowers().size()); assertHeroHasSuperPowers(jsonSuperMan); }); }
@Test void testDeserializeWithIncludes() { JsonParsers.forEachParser(jsonParser -> { Person igor = creator.createJodder(); String json = new JsonSerializer().include("phones", "hobbies").serialize(igor); Person jsonIgor = jsonParser.parse(json, Person.class); assertEquals(2, jsonIgor.getPhones().size()); assertEquals(0, jsonIgor.getHobbies().size()); }); }
@Test void testDeserializeInterfaces2() { JsonParsers.forEachParser(jsonParser -> { Hero superman = creator.createSuperman(); String json = new JsonSerializer().include("powers").withClassMetadata(true).serialize(superman); Hero jsonSuperMan = jsonParser.withClassMetadata(true).parse(json, Hero.class); assertNotNull(jsonSuperMan); assertEquals(4, jsonSuperMan.getPowers().size()); assertHeroHasSuperPowers(jsonSuperMan); }); }
@Test void testDeserializeWithPath() { JsonParsers.forEachParser(jsonParser -> { Person igor = creator.createJodder(); Map map = new HashMap(); map.put("person", igor); String json = new JsonSerializer().serialize(map); map = jsonParser.map("values", Person.class).parse(json); Person jsonIgor = (Person) map.get("person"); assertNotNull(jsonIgor); assertEquals(igor.getLastname(), jsonIgor.getLastname()); assertEquals(igor.getFirstname(), jsonIgor.getFirstname()); assertEquals(igor.getBirthdate(), jsonIgor.getBirthdate()); assertEquals(igor.getHome().getState(), jsonIgor.getHome().getState()); assertEquals(igor.getHome().getStreet(), jsonIgor.getHome().getStreet()); assertEquals(igor.getHome().getCity(), jsonIgor.getHome().getCity()); assertEquals(igor.getWork().getCity(), jsonIgor.getWork().getCity()); assertEquals(jsonIgor, jsonIgor.getWork().getPerson()); }); }
@Test void testNoHintsButClassesForCollection() { JsonParser.Defaults.classMetadataName = "class"; JsonSerializer.Defaults.classMetadataName = "class"; JsonParsers.forEachParser(jsonParser -> { Hero superman = creator.createSuperman(); String json = new JsonSerializer() .exclude("*.class") .include("powers.class") .serialize(superman); Hero jsonSuperMan = jsonParser.parse(json, Hero.class); assertHeroHasSuperPowers(jsonSuperMan); }); }