使用Gson无法将JSON字符串正确转换为FlwCashoutCallbackDto对象
问题原因及解决方案
核心问题
你用了Jackson的@JsonProperty注解映射JSON键名,但Gson并不识别这个注解,它只认自身的@SerializedName注解。这就是txRef、flwRef、Meta等属性无法被正确赋值的根本原因。
修复步骤
- 将所有Java类中的
@JsonProperty替换为Gson的@SerializedName注解,示例如下:// 原代码 @JsonProperty("tx_ref") private String txRef; // 修改后 @SerializedName("tx_ref") private String txRef; - 所有JSON键名与Java属性名不一致的字段,包括嵌套的Meta、Customer类中的字段,都要添加
@SerializedName注解做映射。
额外检查项
- 确保每个DTO类都有无参构造函数,Gson反射实例化对象时依赖无参构造:
public FlwCashoutCallbackDto() {} public Data() {} public Meta() {} public Customer() {} - 核对注解中的字符串与JSON字段名完全一致,包括大小写、下划线等细节,比如JSON里是
flw_ref,注解就不能写成flwRef。
验证代码
转换代码无需改动,但要确保导入正确的Gson注解:
import com.google.gson.annotations.SerializedName; // 转换逻辑 FlwCashoutCallbackDto result = new Gson().fromJson(data, FlwCashoutCallbackDto.class);
内容的提问来源于stack exchange,提问作者Teddy Kossoko
相关产品推荐
相关产品推荐

