java - 为什么 Retrofit & Gson 返回一个 LinkedTreeMap 列表而不是我预期的类型?

标签 java android gson retrofit2 proguard

我正在尝试通过 Retrofit 检索对象列表:

public interface TemplateApi {
    @GET("/api/templates")
    Observable<List<TemplateDto>> getList();
}

这里是 Dto:

public class TemplateDto {
    public String id;
    public String name;

    @Override
    public String toString() {
        return this.name;
    }
}

我得到的不是预期的列表

List<LinkedTreeMap>

这会导致奇怪的副作用(在我的例子中 toString() 返回的不是我所期望的)

最佳答案

好吧,我发现了——Android 确实没有最平坦的学习曲线...

问题不在于 Retrofit 或 Gson 本身,而在于缩小器 (Proguard)。 Proguard 需要在默认名为“proguard-rules.pro”的文件中进行配置。

添加以下行:

-keepattributes Signature
-keepattributes *Annotation*
-keep class com.myproject.dtos.** { *; }

感谢this answer .

关于java - 为什么 Retrofit & Gson 返回一个 LinkedTreeMap 列表而不是我预期的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46998433/

相关文章:

android - SherlockMapActivity 不工作

java - Android通用音频资源对象

java - Json:使用接口(interface)泛型列表反序列化接口(interface)类

java - 有关 AVD 平台 2.2 API- lvl 8 内部存储器大小的问题

java - TCP 按字节发送/检索 header

android - 我们什么时候应该使用 android.arch.lifecycle :compiler (or android. arch.lifecycle :common-java8)?

java - 创建GSON对象错误

java - 使用不同的类将 JSON 数据与 GSON 映射

java - 在 fragment 中显示两个溢出菜单

java - MySql Jsp错误