jackson逆シーケンス化リストまたはmap

1252 ワード

From https://www.cnblogs.com/quanyongan/archive/2013/04/16/3024993.html
Jackson処理の一般的なJavaBeanとJson間の変換はObjectMapperオブジェクトのreadValueとwriteValueAsStringの2つの方法を使用すれば実現できる.ただし、リストのような複雑なタイプのCollectionを変換するには、複雑なタイプが汎用のCollection Typeであることを逆シーケンス化する必要があります.
ArrayListであればObjectMapperのgettypeFactory()を使用する.constructParametricType(collectionClass, elementClasses);
HashMapならObjectMapperのgettypeFactory().constructParametricType(HashMap.class,String.class, YourBean.class);
public final ObjectMapper mapper = new ObjectMapper(); 
     
    public static void main(String[] args) throws Exception{  
        JavaType javaType = getCollectionType(ArrayList.class, YourBean.class); 
        List lst =  (List)mapper.readValue(jsonString, javaType); 
    }   
       /**   
        *      Collection Type  
        * @param collectionClass    Collection   
        * @param elementClasses       
        * @return JavaType Java     
        * @since 1.0   
        */   
    public static JavaType getCollectionType(Class> collectionClass, Class>... elementClasses) {   
        return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);   
    }