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);
	}
 
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM