![](/img/trans.png)
[英]Exception in thread "main" java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class java.util.List
[英]Exception in thread “main” java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to Custom Object
我有一個 JSON 如下
[{
"empId": 22,
"Active": true,
"dept": {
"deptID": 507,
"deptDetails": [{
"deptName": "CSE",
"CreateDate": "2010-11-15T15:27:45.263"
}]
}
}]
我正在嘗試讀取 deptName ,如下所示
public class TestEmp {
public static void main(String[] args) throws IOException {
String json = "[{\r\n" +
" \"empId\": 22,\r\n" +
" \"Active\": true,\r\n" +
" \"dept\": {\r\n" +
" \"deptID\": 507,\r\n" +
" \"deptDetails\": [{\r\n" +
" \"deptName\": \"CSE\",\r\n" +
" \"CreateDate\": \"2010-11-15T15:27:45.263\"\r\n" +
" }]\r\n" +
" }\r\n" +
"}]";
List<Map<String, Object>> lstMpAffOffers = convertJsonToListMap(json);
for (Map<String, Object> map : lstMpAffOffers) {
Map<String, Object> deptMap = (Map<String, Object>) map.get("dept");
List<DeptDetail> deptDetail = (List<DeptDetail>) deptMap.get("deptDetails");
System.out.println(deptDetail.get(0).getDeptName());
}
}
public static List<Map<String, Object>> convertJsonToListMap(String json) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(json, new TypeReference<List<Map<String, Object>>>() {
});
}
}
DeptDetail.java
public class DeptDetail {
private String deptName;
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getCreateDate() {
return CreateDate;
}
public void setCreateDate(String createDate) {
CreateDate = createDate;
}
private String CreateDate;
}
當我嘗試讀取 deptName 時,出現以下錯誤
線程“主”java.lang.ClassCastException 中的異常:java.util.LinkedHashMap 無法轉換為 com.DeptDetail
首先,將其轉換為 object 數組,然后為每個元素轉換為DeptDetail
Object[] objects=(Object[])deptMap.get("deptDetails");
List<DeptDetail> deptDetails = new ArrayList<DeptDetail>();
for (Object obj : objects) {
DeptDetail deptDetail = (DeptDetail)obj;
deptDetails.add(deptDetail);
}
您需要將“deptDetails”object 顯式轉換為您的 DeptDetail class 列表
public class TestEmp {
public static void main(String[] args) throws IOException {
String json = "[{\r\n" +
" \"empId\": 22,\r\n" +
" \"Active\": true,\r\n" +
" \"dept\": {\r\n" +
" \"deptID\": 507,\r\n" +
" \"deptDetails\": [{\r\n" +
" \"deptName\": \"CSE\",\r\n" +
" \"CreateDate\": \"2010-11-15T15:27:45.263\"\r\n" +
" }]\r\n" +
" }\r\n" +
"}]";
List<Map<String, Object>> lstMpAffOffers = convertJsonToListMap(json);
ObjectMapper objectMapper = new ObjectMapper();
for (Map<String, Object> map : lstMpAffOffers) {
Map<String, Object> deptMap = (Map<String, Object>) map.get("dept");
List<DeptDetail> deptDetail = objectMapper.convertValue(deptMap.get("deptDetails"), new TypeReference<List<DeptDetail>>(){})
System.out.println(deptDetail.get(0).getDeptName());
}
}
public static List<Map<String, Object>> convertJsonToListMap(String json) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(json, new TypeReference<List<Map<String, Object>>>() {
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.