我收到错误
Caused by: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.test.QueryOrderInfo
bizContent是一个json字符串,我想将其解析为
QueryOrderInfo
对象。
更新: 现在我添加了
fromJson2()
方法,效果很好。但为什么它在 fromJson()
方法中抛出异常
public static void main(String[] args) {
BaseResponse<QueryOrderInfo> queryOrderInfoBaseResponse = null;
try {
queryOrderInfoBaseResponse = new ObjectMapper().readValue("{\"returnCode\":\"SUCCESS\",\"biz_content\":\"{\\\"mchReserved\\\":\\\"1\\\",\\\"cmbOrderId\\\":\\\"900119022715203210134445\\\",\\\"dscAmt\\\":\\\"0\\\",\\\"payType\\\":\\\"ZF\\\",\\\"orderId\\\":\\\"9001004180329103417277\\\",\\\"txnTime\\\":\\\"20190227152032\\\",\\\"merId\\\":\\\"3089991701207X7\\\",\\\"currencyCode\\\":\\\"156\\\",\\\"txnAmt\\\":\\\"1\\\",\\\"tradeState\\\":\\\"S\\\"}\",\"sign\":\"kGE7mwX/ubRlPsPZGNydjY3uCjILgGuxD4j1e/inyC/DlHn5o7LkISpmrH0YQvoZT6lyOxtr9uIkKnqVcTMZNYeYIBU+Tz8NRaPZHuFr/qQb0+fUgEgq5j9ovaFczAF8wrnEfIRYBEqp0ERtK7NG+X6eZLIr9nNVy31eKcnFx1tToJ/zPYN91GOKOtTrJaJrKeDY4+r3ctzsDhnD+TO2MX5zfvW0WLoUjvX5geiYLVpt022BiyxSJyOsrDS858RBmZ5FbVlYP0v/WqwX+J8VY1kDSLxvPtSZuPnsluJPXw6ccnYNH8dir0VgrYfrWRvnupctIm2elCmL7ES6KzDTGg==\",\"encoding\":\"UTF-8\",\"version\":\"0.0.1\",\"signMethod\":\"01\",\"respCode\":\"SUCCESS\"}", new TypeReference<BaseResponse<QueryOrderInfo>>() {
});
QueryOrderInfo queryOrderInfo = queryOrderInfoBaseResponse.fromJson();
QueryOrderInfo queryOrderInfo2 = queryOrderInfoBaseResponse.fromJson2(QueryOrderInfo.class);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
BaseResponse 类
@NoArgsConstructor
@Data
public class BaseResponse<T> {
private String returnCode;
@JsonProperty(value = "biz_content")
private String bizContent;
private String sign;
private String encoding;
private String version;
private String signMethod;
private String respCode;
private String errCode;
private String respMsg;
public T fromJson() {
try {
return new ObjectMapper().readValue(this.bizContent, new TypeReference<T>() {
});
} catch (JsonProcessingException e) {
return null;
}
}
public T fromJson2(Class<T> clazz) {
try {
return new ObjectMapper().readValue(this.bizContent, clazz);
} catch (JsonProcessingException e) {
return null;
}
}
}
@NoArgsConstructor
@Data
public class QueryOrderInfo {
private String mchReserved;
private String cmbOrderId;
private String dscAmt;
private String payType;
private String orderId;
private String txnTime;
private String merId;
private String currencyCode;
private String txnAmt;
private String tradeState;
}