Parcelable类自动新增stability字段致API请求校验失败求助
问题:未定义的stability字段出现在POST请求体中
我在实现Parcelable的OutstandingContact类里未定义stability字段,但将该类对象作为POST请求体发送至服务器时,请求体自动新增了stability字段。该问题在我的设备上无法复现,但用户端出现此问题导致服务器请求校验失败。
类代码
public class OutstandingContact implements Parcelable { public String phoneNumber; public String gstIn; public String cin; public String email; public String pincode; public String emailCc; public List<String> addressList; public OutstandingContact() { } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeString(this.phoneNumber); parcel.writeString(this.gstIn); parcel.writeString(this.cin); parcel.writeString(this.email); parcel.writeString(this.pincode); parcel.writeString(this.emailCc); parcel.writeStringList(this.addressList); } protected OutstandingContact(Parcel in) { this.phoneNumber = in.readString(); this.gstIn = in.readString(); this.cin = in.readString(); this.email = in.readString(); this.pincode = in.readString(); this.emailCc = in.readString(); this.addressList = in.createStringArrayList(); } public static final Creator<OutstandingContact> CREATOR = new Creator<OutstandingContact>() { @Override public OutstandingContact createFromParcel(Parcel source) { return new OutstandingContact(source); } @Override public OutstandingContact[] newArray(int size) { return new OutstandingContact[size]; } }; }
示例请求体
{ "phoneNumber": "99999999", "gstIn": "ANDNFJKDNF43848", "cin": "", "email": "abc@whatever.com", "pincode": "000001", "emailCc": "", "addressList": [], "stability": true }
排查与解决方案
- 序列化库配置问题:检查你使用的JSON序列化工具(如Gson、Jackson),是否存在全局规则自动添加字段,或者该类是否继承了带有
stability字段的父类。可以通过显式注解控制序列化:- Gson:使用
@Expose标记需要序列化的字段,配合GsonBuilder().excludeFieldsWithoutExposeAnnotation()构建实例; - Jackson:添加
@JsonIgnoreProperties(ignoreUnknown = true)注解到类上,忽略未知字段。
- Gson:使用
- 第三方SDK注入:部分性能监控、稳定性检测类的SDK可能通过字节码注入动态给实体类添加字段,排查近期集成的第三方SDK,尝试暂时禁用后验证问题是否消失。
- 用户端数据缓存:用户端可能存在旧版本的序列化对象缓存(如SharedPreferences、本地数据库),旧版本类包含
stability字段,反序列化后混入新对象中。建议清理相关缓存,或在对象初始化时重置可能存在的额外字段。 - Parcelable转JSON的逻辑:如果网络请求前是将Parcelable对象转换为JSON,检查转换逻辑是否被篡改,比如自定义的转换工具类是否意外引入了额外字段。
内容的提问来源于stack exchange,提问作者Ankur
相关产品推荐
相关产品推荐

