首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Retrofit不序列化我的响应类中的第二个对象

Retrofit不序列化我的响应类中的第二个对象
EN

Stack Overflow用户
提问于 2019-10-16 23:31:26
回答 1查看 977关注 0票数 3

我的问题是,当使用APK发布版运行我的应用程序时,GSON没有序列化我的第二个对象。成功地序列化了第一个对象。但是,应用程序在调试模式下运行,一切都很好。

我的应用程序使用Retrofit2.6和Proguard。Gradle版本是gradle:3.5.1

来自WebServer的json数据

代码语言:javascript
复制
 {
  "error": false,
  "contents": [
    {
      "id": 1,
      "channel": {
        "id": 7,
        "language_id": 1
      },
      "publisher": {
        "id": 1,
        "name": "Name of Publisher"
      },
      "title": "Some title",
      "description": "This is description",
      "subscribed": false
    }
  ]
}

这是Retrofit的响应类

代码语言:javascript
复制
public class GetContentsResponse{

    @SerializedName("error")
    @Expose
    private boolean mError;

    @SerializedName("contents")
    @Expose
    private List<Content> mContents;

}

public class Content {

    @SerializedName("id")
    @Expose
    private int mId;

    @SerializedName("channel")
    @Expose
    private Channel mChannel;

    @SerializedName("publisher")
    @Expose
    private Publisher mPublisher;

    @SerializedName("title")
    @Expose
    private String mTitle;

    @SerializedName("description")
    @Expose
    private String mDescription;

    @SerializedName("subscribed")
    @Expose
    private boolean mSubscribed;

    public int getId() {
        return mId;
    }

    public Channel getChannel() {
        return mChannel;
    }

    public String getTitle() {
        return mTitle;
    }

    public String getDescription() {
        return mDescription;
    }

    public boolean isSubscribed() {
        return mSubscribed;
    }

    public Publisher getPublisher() {
        return mPublisher;
    }

}

这是我的守卫规则

代码语言:javascript
复制
-dontwarn javax.annotation.**
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
-dontwarn org.codehaus.mojo.animal_sniffer.*
-dontwarn okhttp3.internal.platform.ConscryptPlatform
-keepattributes *Annotation*

Publisher对象在调试模式时正在解析(已禁用保护程序)。发行版APK运行时,Publisher对象为空(已启用保护)。

我非常认真地研究这个问题。但我不明白问题是什么?有人能帮忙吗?

编辑:我现在把我所有的模型类都保存在Proguard规则中,但是这里有一个神秘的错误。我找不到了。为什么通道对象序列化,但是Publisher对象没有序列化?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-18 18:22:26

把这个加进你的护卫里

`-保持公共类com.package.name.models. { *;}`**

注意:- com.package.name.models -这是您的POJO类所在的包名。

就这样。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58422927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档