方法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;