为什么Retrofit& Gson返回LinkedTreeMap的List而不是我期望的类型?

时间:2017-10-29 08:58:57

标签: 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我得到了

List<LinkedTreeMap>

导致奇怪的副作用(在我的情况下toString()返回不是我期望的)

1 个答案:

答案 0 :(得分:2)

好的我发现了 - Android真的没有最平坦的学习曲线......

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

添加以下行:

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

感谢this answer