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);
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);
}