Java: 通过Jackson将JSON字符串反序列化成集合对象
Q: 如何通过Jackson反序列化复杂类型Collection
例
ArrayList<MyObject>HashMap<String,MyObject>
A:
将JSON String与Object之间的转换只要使用ObjectMapper对象的readValue和writeValueAsString
String jsonStr = objectMapper.writeValueAsString(myObj);
MyObject myObj = objectMapper.readValue(jsonStr, MyObject.class);
但如果是复杂类型就不能直接传Class了,需要通过ObjectMapper的getTypeFactory()方法获取范型的类型
JavaType listType = getCollectionType(ArrayList.class, MyObject.class);
JavaType mapType = getCollectionType(ArrayList.class, String.class, MyObject.class);
List<MyObject> objList = mapper.readValue(jsonStr, listType);
Map<String, MyObject> objList = mapper.readValue(jsonStr, mapType);
public JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
}

浙公网安备 33010602011771号