2017-03-02 55 views
0
对象

我的REST API返回的JSON字符串格式以下对象的实例:Andiord APK签署:杰克逊ObjectMapper返回null包含列表

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

在调试APK,ObjectMapper能够将JSON字符串反序列化到这个对象实例成功和列表数据是完整的。但是,在已签名的apk中,返回的对象包含空列表。即使名称为空。 ObjectMapper没有例外。为什么这不起作用? 其他返回没有任何列表的其他对象的反序列化没有任何问题。为什么包含列表的对象不起作用?

我查了很多SO职位,但找不到任何的投入来解决这个问题。 任何提示/指针非常感谢。

问候, Shobhana

回答

0

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

我怀疑您正在使用ProGuard,并且默认情况下已禁用它进行调试构建。您也可以通过在您的build.gradle中设置minifyEnabled false或从ProGuard中排除特定类别来禁用它。

+0

非常感谢Marcin。对不起,延迟回复。是的,我正在使用ProGuard,我更愿意保持启用状态。所以我会尝试第二个建议,并确认是否排除ProGuard中的某些类可解决此问题。 –

+0

我排除了需要从ProGuard反序列化的必要gson类和我的应用程序类,它工作正常!该列表包含Rest API返回的数据。再次感谢Marcin! –

+0

我想知道我的应用程序的其他对象如何在没有任何问题的情况下进行反序列化?为什么只有包含列表的对象显示这个问题 –