You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)注解到类上,忽略未知字段。
  • 第三方SDK注入:部分性能监控、稳定性检测类的SDK可能通过字节码注入动态给实体类添加字段,排查近期集成的第三方SDK,尝试暂时禁用后验证问题是否消失。
  • 用户端数据缓存:用户端可能存在旧版本的序列化对象缓存(如SharedPreferences、本地数据库),旧版本类包含stability字段,反序列化后混入新对象中。建议清理相关缓存,或在对象初始化时重置可能存在的额外字段。
  • Parcelable转JSON的逻辑:如果网络请求前是将Parcelable对象转换为JSON,检查转换逻辑是否被篡改,比如自定义的转换工具类是否意外引入了额外字段。

内容的提问来源于stack exchange,提问作者Ankur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:33:31