/** * Deserializes a list of objects. * * @param <T> The list elements' class. * @param data Serialized form of the list in JSON format. * @param clazz The class of objects found in the list. * @return A list of objects of the specified type. */ public static <T> List<T> deserializeList(String data, Class<T> clazz) { return deserializeList(null, data, clazz); }
/** * Deserializes an object from JSON format. * * @param typeProperty The name of the property signifying the data type. * @param data Serialized form of the object. * @return An instance of the deserialized object. */ public static Object deserialize(String typeProperty, String data) { if (data == null) { return null; } if (data.startsWith("[")) { return deserializeList(typeProperty, data, Object.class); } try { return getMapper(typeProperty).readValue(data, Object.class); } catch (Exception e) { throw new RuntimeException(e); } }
private void testSerializer(String typeProperty) { TestPerson obj = new TestPerson(); String s = JSONUtil.serialize(typeProperty, obj); print(s); TestPerson obj2 = (TestPerson) JSONUtil.deserialize(typeProperty, s); assertTrue(obj.equals(obj2)); List<TestPerson> list = new ArrayList<>(); list.add(obj); list.add(obj); s = JSONUtil.serialize(typeProperty, list); print(s); List<TestPerson> list2 = JSONUtil.deserializeList(typeProperty, s, TestPerson.class); assertEquals(list, list2); @SuppressWarnings("unchecked") List<TestPerson> list3 = (List<TestPerson>) JSONUtil.deserialize(typeProperty, s); assertEquals(list, list3); }