📌 问题背景:
解析 JSON,并将其转换为对应的数据结构。转换普通对象时,可以直接使用 Class 实例进行直接转换:
Aa=JSON.parseObject(str, A.class);
但是,如果是 类似 Map这里集合(带有泛型)对象,直接转换则格式可能并不正确:
// 如果需要Map<String, String> 结果不是想要的格式Mapa=JSON.parseObject(str, Map.class)
📌 解决方案:
使用 TypeReference 进行解析:
// 可以直接使用HashMap<String, String>map=JSONObject.parseObject(str, newTypeReference<HashMap<String, String>>(){}); // 其他类型对象EnjoyResponseDTO<EnjoyPageResponseDataDTO<Long>>result=JSONObject.parseObject(str, newTypeReference<EnjoyResponseDTO<EnjoyPageResponseDataDTO<Long>>>(){}); // 或者type的构造中使用参数EnjoyResponseDTO<EnjoyPageResponseDataDTO<T>>result=JSONObject.parseObject(str, newTypeReference<EnjoyResponseDTO<EnjoyPageResponseDataDTO<T>>>(Long.class){});
在 TypeReference 的泛型中传入需要反序列化的泛型对象即可。