2017-02-10 3 views
2

Ich verwende die Jackson JSON-Bibliothek innerhalb meiner Android-App, um JSON von einer REST-API zu analysieren. Alles funktioniert gut, außer ein paar Instanzen, wo ich ObjectMapper.readValue und ObjectMapper.treeToValue verwende, um das JSON zu Objekten zu deserialisieren. Es funktioniert jedes Mal gut, wenn die Build-Variante 'debug' ausgeführt wird, aber wenn das Build 'release' ausgeführt wird, kann es das Objekt nicht erstellen und gibt stattdessen null zurück.Android - Jackson JSON-Parser gibt Nullwert in 'release' zurück builds

Ich habe viel darüber gelesen, dass die Proguard-Einstellungen richtig konfiguriert sind, aber ich benutze Proguard nicht und habe alle Referenzen auf Proguard in meiner App entfernt. Gibt es noch etwas, das das Problem mit dem Build "release" verursachen könnte?

Jonathan

Antwort

0

stellte sich heraus, das Problem der Klasse zurückzuführen war ich mit meiner JSON deserialise innerhalb meiner Tätigkeit Klasse deklariert wurde daher eine innere Klasse. Ich habe gelesen, dass innere Klassen mit dem Jackson ObjectMapper verwendet werden können, solange sie als statisch deklariert wurden, was das war, also nicht genau wissen, warum es im 'release' Modus nicht funktioniert hat. Sobald ich es zu einer regulären öffentlichen Klasse gemacht habe, hat alles funktioniert.

0

Dies war der einzige Post, den ich fand, der eine ähnliche Situation beschrieb, die ich erlebte, aber in meinem Fall gab es keine innere Klasse. Es stellt sich heraus, dass es aufgrund der Tatsache war, dass einige Felder Paket privat waren. In einem Debug-Build funktionierte alles einwandfrei, aber auf dem Release-Build waren diese Felder null. änderte sie in die Öffentlichkeit und es hat gut funktioniert. Getter/Setter für alle zu setzen würde wahrscheinlich auch funktionieren, aber ich habe es nicht versucht.

Verwandte Themen