java.util.LinkedHashMap cannot be cast to com.xxx
问题
接收json格式为:
{ "attributes": {}, "dataItems": [ { "attributes": { "cardNo": "", "isOut": "1", "inOperator": "Admin", "carNo": "浙-*****", "parkName": "马赛克", "inTime": "2018-01-12 09:22:31", "inEventType": "", "inEquip": "6楼87号入口", "cardType": "临时车A", "parkCode": "0000007796" }, "failItems": [], "objectId": "", "operateType": "READ", "subItems": [] } ], "resultCode": 0, "seqId": "-983v_4cbn", "serviceId": "3c.park.queryparkinrecord" }
接收的对象为:
public class JHTResult { // 定义jackson对象 private static final ObjectMapper MAPPER = new ObjectMapper(); //服务标识 private String serviceId; //返回码0:成功,1:未知错误,2:参数不正确 private Integer resultCode; private String seqId; private Object attributes; private String message; private List<JHTDataItemsResult> dataItems; //省略get set }
其中:JHTDataItemsResult.java为:
public class JHTDataItemsResult<E> { //子对象ID private String objectId; //子对象操作类型,固定值传入:READ private String operateType; //返回结果值对象 private E attributes; private List failItems; private List subItems; //省略get set }
当将json转化为JHTResult时,获取attributes属性时
JHTVehicleRecordData resultVo = (JHTVehicleRecordData) attributes;
报以下错误:
java.util.LinkedHashMap cannot be cast to com.*****.park.model.vo.JHTVehicleRecordData
解决方法
先将对象转为json字符串,再根据ObjectMapper类的readValue()方法转化为对应class的类对象
JHTVehicleRecordData resultVo = JsonUtils.conveterObject(attributes, JHTVehicleRecordData.class);
其中JsonUtils.java为:
public class JsonUtils { /** * <p> * 对象转JSON字符串 * </p> */ public static String object2Json(Object obj) { String result = null; try { ObjectMapper objectMapper = new ObjectMapper(); result = objectMapper.writeValueAsString(obj); } catch (IOException e) { e.printStackTrace(); } return result; } public static Map object2Map(Object obj) { String object2Json = object2Json(obj); Map<?, ?> result = jsonToMap(object2Json); return result; } /** * <p> * JSON字符串转Map对象 * </p> */ public static Map<?, ?> jsonToMap(String json) { return json2Object(json, Map.class); } /** * <p> * JSON转Object对象 * </p> * */ public static <T> T json2Object(String json, Class<T> cls) { T result = null; try { ObjectMapper objectMapper = new ObjectMapper(); result = objectMapper.readValue(json, cls); } catch (IOException e) { e.printStackTrace(); } return result; } public static <T> T conveterObject(Object srcObject, Class<T> destObjectType) { String jsonContent = object2Json(srcObject); return json2Object(jsonContent, destObjectType); } }

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南