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号