Gson deserialize null Zeiger in veröffentlichten apk
Ich schreibe eine Android-App und benötige gson, um den json-String zu deserialisieren:
{
"reply_code": 001,
"userinfo": {
"username": "002",
"userip": 003
}
}
so erstelle ich zwei Klassen:
public class ReturnData {
public String reply_code;
public userinfo userinfo;
}
public class userinfo {
public String username;
public String userip;
}
ndlich mein Java-Code in MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Context context= MainActivity.this;
//Test JSON
String JSON="{\"reply_code\": 001,\"userinfo\": {\"username\": \"002\",\"userip\": 003}}";
Gson gson = new Gson();
ReturnData returnData=gson.fromJson(JSON,ReturnData.class);
if(returnData.reply_code==null)
Toast.makeText(context,"isNULL",Toast.LENGTH_SHORT).show();
else
Toast.makeText(context,"notNULL",Toast.LENGTH_SHORT).show();
}
Was mich verwirrt hat, ist, dass die App beim Debuggen gut lief und "notNULL" ausgegeben wurde. Ich kann sehen, dass jede Attribution des Objekts ordnungsgemäß deserialisiert wurde. Wenn ich jedoch veröffentlichte apk von Android Studio generiert und apk auf dem Telefon ausgeführt habe, gab es "isNULL" aus, die json-Auflösung schlug fehl failed
Wer kann mir sagen, was passiert ist?!
PS: build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "19.1"
defaultConfig {
applicationId "com.padeoe.autoconnect"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "2.1.4"
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('src/gson-2.3.1.jar')
}