方法1:
List returnBookResults = mapper.readValue(JSON.toJSONString(response.getData()),new TypeReference(){});
方法2:
JavaType javaType = mapper.getTypeFactory().constructParametricType(ArrayList.class, ReturnBookResult.class);
List returnBookResults = (List)mapper.readValue(JSON.toJSONString(response.getData()), javaType);

json转复杂类型:

private <T> BaseResponse parseResponse(String response, Class<T> clz,Class<?> ...listClz) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        if(clz==List.class){
            BaseResponse baseResponse = new BaseResponse();
            JavaType javaType = objectMapper.getTypeFactory().constructParametricType(BaseResponseList.class, listClz);
            BaseResponseList baseResponseList = objectMapper.readValue(response,javaType);
            baseResponse.setData(baseResponseList.getData());
            baseResponse.setStatus(baseResponseList.getStatus());
            return baseResponse;
        } else {
            JavaType javaType = objectMapper.getTypeFactory().constructParametricType(BaseResponse.class, clz);
            BaseResponse baseResponse = objectMapper.readValue(response,javaType);
            return baseResponse;
        }
    }

注意import包为
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐