2017-03-02 15 views
0
을 포함하는 객체의 null을 반환

내 나머지 API는 JSON 문자열 형식으로 다음 개체의 인스턴스를 반환 : 디버그 APK에서Andiord이 APK 로그인 :</p>이 <pre><code>public class ObjectWithList implements Serializable { private long id; private String name; private List<String> contacts; } </code></pre> <p>내 안드로이드 응용 프로그램은 다음 코드를 사용하여이 결과를 직렬화하려고 잭슨 ObjectMapper 목록

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

, ObjectMapper 성공적으로이 개체의 인스턴스로 JSON 문자열을 역 직렬화 할 수 있고 목록 데이터는 그대로입니다. 그러나 서명 된 apk에서 반환 된 객체는 빈 목록을 포함합니다. 심지어 이름은 null입니다. ObjectMapper에는 예외가 없습니다. 왜이 기능이 작동하지 않습니까? 목록이없는 다른 개체를 반환하는 다른 API는 아무 문제없이 deserialize됩니다. 목록을 포함하는 객체가 작동하지 않는 이유는 무엇입니까?

많은 SO 게시물을 확인했지만이 문제를 해결하기위한 입력을 찾을 수 없습니다. 힌트/포인터를 제공해 주시면 대단히 감사하겠습니다.

안부, 디버그 APK에서 Shobhana

답변

0

은 ObjectMapper 성공적으로이 개체의 인스턴스로 JSON 문자열을 역 직렬화 할 수 있고 목록 데이터는 그대로입니다. 그러나 서명 된 apk에서 반환 된 객체에는 빈 목록이 포함되어 있습니다.

ProGuard를 사용하고 있으며 디버그 빌드에는 기본적으로 사용할 수 없다고 생각됩니다. build.gradleminifyEnabled false을 설정하거나 ProGuard에서 특정 클래스를 제외하여 서명 된 사용자에 대해서도 사용을 중지 할 수 있습니다.

+0

정말 감사합니다. 응답 지연에 늦어서 죄송합니다. 예, ProGuard를 사용하고 있으며 계속 사용하도록 설정합니다. 따라서 두 번째 제안을 시도하고 ProGuard의 특정 클래스를 제외하면이 문제가 해결되는지 확인하겠습니다. –

+0

나는 필요한 gson 클래스와 ProGuard에서 deserialize 할 필요가있는 내 app 클래스를 제외 시켰습니다. 이 목록에는 Rest API에서 반환 한 데이터가 포함됩니다. Marcin에게 다시 한 번 감사드립니다! –

+0

내 응용 프로그램의 다른 객체가 아무런 문제없이 어떻게 직렬화 해제되는지 궁금합니다. 왜 목록을 포함하는 객체 만이 문제를 보여 줍니까? –