背景
在使用 FastJson转换字符串为带泛型属性的对象,报错
cannot be cast to xxx(带泛型属性的类)
解决办法
1.先获取到解析对象的 泛型属性值,转成Json字符串
2.将此字符串再利用Json工具类转换为对象
举例
举例用的是FastJson,其他Json工具也可以这样做。
泛型类
public class NotifyHttpBO<T> {
private String nonce;
private String signature;
private T msg;
public String getNonce() {
return nonce;
}
public void setNonce(String nonce) {
this.nonce = nonce;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public T getMsg() {
return msg;
}
public void setMsg(T msg) {
this.msg = msg;
}
@Override
public String toString() {
return "NotifyHTTP [nonce=" + nonce + ", signature=" + signature + ", msg=" + msg + "]";
}
}
获取泛型属性
NotifyHttpBO<OneNetDataMsg> notify = JSON.parseObject(body,NotifyHttpBO.class);
String msgStr = JSON.toJSONString(notify.getMsg());
OneNetDataMsg msg = JSON.parseObject(msgStr,OneNetDataMsg.class);