今天对接阿里支付,对返回数据进行转换实体,但是使用fastjson获取阿里返回的数据转换为实体出现一些字段为null,网上没找到解决办法,也没有具体说明因为什么,做此纪录,可能只是原因之一
这是阿里返回的接口处理信息
{"alipay_trade_precreate_response":{"code":"10000","msg":"Success","out_trade_no":"1594717013152","qr_code":"https:\/\/qr.alipay.com\/bax08956qj"},"sign":"1234"}
这是我接收返回信息正确的实体,以前因为alipayTradePrecreateResponse参数不一致,导致getter和setter方法也不像现在这样,所以可能是因为fastjson内部根据参数名有映射到setter,但是由于之前自定义参数名导致无法正确映射,
为什么说是setter名导致的:
因为我把参数名换成alipayTradePrecreateResponse,但是setter名字还是之前的setResponse,依旧不能正确转换,但是把setter名字换了,就可以,都是猜测,只是建议,如有问题,敬请指出,一起必坑!!!!!!
public class LALiPrecreate {
// @ApiListField("alipay_trade_precreate_response")
private AlipayTradePrecreateRsponse alipayTradePrecreateResponse;
private String sign;
public AlipayTradePrecreateRsponse getAlipayTradePrecreateResponse() {
return alipayTradePrecreateResponse;
}
public void setAlipayTradePrecreateResponse(AlipayTradePrecreateRsponse alipayTradePrecreateResponse) {
this.alipayTradePrecreateResponse = alipayTradePrecreateResponse;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
@Override
public String toString() {
return "LALiPrecreate{" +
"alipayTradePrecreateResponse=" + alipayTradePrecreateResponse +
", sign='" + sign + '\'' +
'}';
}
}