1

我的 Rest API 以 Json 字符串格式返回以下对象的实例:

public class ObjectWithList implements Serializable {
    private long id;
    private String name;
    private List<String> contacts;
}

我的 Android 应用程序尝试使用以下代码反序列化此结果:

ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(jsonResponse, ObjectWithList.class);

在 debug apk 中,ObjectMapper 能够成功地将 JSON 字符串反序列化到这个对象实例中,并且列表数据是完整的。但是,在签名的 apk 中,返回的对象包含空列表。连名字都是空的。ObjectMapper 没有例外。为什么这不起作用?返回没有任何列表的任何其他对象的其他 API 将被反序列化而不会出现任何问题。为什么包含列表的对象不起作用?

我检查了许多 SO 帖子,但找不到任何输入来解决这个问题。非常感谢任何提示/指针。

问候, 肖巴纳

4

1 回答 1

2

在 debug apk 中,ObjectMapper 能够成功地将 JSON 字符串反序列化到这个对象实例中,并且列表数据是完整的。但是,在签名的 apk 中,返回的对象包含空列表

我怀疑您正在使用 ProGuard,默认情况下它在调试版本中被禁用。minifyEnabled false您也可以通过在ProGuard 中设置build.gradle或从 ProGuard 中排除某些类来为您签名的类禁用它。

于 2017-03-02T11:49:52.000 回答