1

转为泛型集合

public static <T> T JSONStringToObject(String str, Class<?> collectionClass, Class<?>... elementClasses) throws IOException {
    ObjectMapper mapper = new ObjectMapper();
    JavaType javaType = mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
    return mapper.readValue(str, javaType);
}

第一个class是泛型集合或者泛型类的class,后面的class数组则是具体的元素类的class。若集合为HashMap则数组依次填入key value的class。

转为泛型类

与转为集合方法相同,只是传入集合类class的地方改为传入泛型类的class。

如果constructParametricType()方法不管用

这种情况多见于复杂泛型嵌套的情景,此时需要使用TypeReference。

public static <T> T JSONStringToObject(String str, TypeReference<T> valueTypeRef) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        return mapper.readValue(str, valueTypeRef);
    }
BaseResponse<List<MyResp>> resp = JsonUtil.JSONStringToObject(result, new TypeReference<BaseResponse<List<MyResp>>>(){});

guomz
16 声望1 粉丝

不求做完人,只求做凡人。