Android 签名的 apk:Jackson ObjectMapper returns null 对于包含 List 的对象

Andiord signed apk : Jackson ObjectMapper returns null for an object containing List

My Rest API returns 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 中,对象 returned 包含空列表。连名字都是空的。 ObjectMapper 也不例外。为什么这不起作用? 其他 API return 没有任何列表的任何其他对象都可以毫无问题地反序列化。为什么包含列表的对象不起作用?

我检查了很多 SO 帖子,但找不到任何输入来解决这个问题。 非常感谢任何hints/pointers。

此致, 肖巴纳

In debug apk, ObjectMapper is able to deserialize the JSON string into this object instance successfully and the list data is intact. However, in signed apk, the object returned contains empty list

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