java.util.LinkedHashMap cannot be cast to com.xxx
2018-01-12 18:27
495 查看
问题描述:
接收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(object2Js
4000
on);
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);
}
}
接收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(object2Js
4000
on);
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);
}
}
相关文章推荐
- java.util.LinkedHashMap cannot be cast to com.XXX.XXX
- Jackson转换泛型List出现错误java.util.LinkedHashMap cannot be cast to com.xxx
- Jackson转换泛型List出现错误java.util.LinkedHashMap cannot be cast to com.xxx
- java.util.LinkedHashMap cannot be cast to com.wisely.entity.User
- 打混淆包的时候 遇到一个 java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to ..问题
- 【exceptions】java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxxxx
- Mybatis报错——java.util.HashMap cannot be cast to com.bean.Employee
- Spring Web's RestTemplate, exchange. java.util.LinkedHashMap cannot be cast to
- java.util.LinkedHashMap cannot be cast to
- 关于apk打包,报java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap cannot be cast to 的错误
- 整合SSH java.lang.ClassCastException: xxx_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
- java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to
- 问题 java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to
- com.google.gson.internal.LinkedTreeMap cannot be cast to xxx
- Gson解析报错 java.lang.ClassCastException: com.google.gson.internal.StringMap cannot be cast to XXX
- java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to
- java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.
- 错误内容为:java.util.HashMap cannot be cast to Model
- java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to
- java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to