gpt4 book ai didi

android - Retrofit 没有序列化我的响应类中的第二个对象

转载 作者:行者123 更新时间:2023-11-30 04:59:54 25 4
gpt4 key购买 nike

我的问题是,当我使用发布 APK(启用混淆器)运行我的应用程序时,GSON 没有序列化我的第二个对象。第一个对象已成功序列化。但是,应用程序在 Debug模式下运行一切正常。

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

我的来自 WebServer 的 json 数据

 {
"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 的 Response 类

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;
}

}

这是我的混淆规则

-dontwarn javax.annotation.**
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
-dontwarn org.codehaus.mojo.animal_sniffer.*
-dontwarn okhttp3.internal.platform.ConscryptPlatform
-keepattributes *Annotation*

Publisher 对象在 Debug模式下解析(proguard 禁用)。当 Release APK 运行时,Publisher 对象为空(proguard 启用)。

我真的很研究这个问题。但我不明白问题是什么?有没有人可以帮忙?

编辑:我暂时将所有模型类保留在 Proguard 规则中,但这里有一个神秘的错误。我找不到它。为什么 Channel 对象序列化而 Publisher 对象没有序列化?

最佳答案

在你的proguard中添加这个

-keep public class com.package.name.models.** { *; }

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

就是这样。

关于android - Retrofit 没有序列化我的响应类中的第二个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58422927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com