我得到一個StackOverflow
錯誤任何時候我嘗試Serialize
一個JSON String
我POJO Object
具有兩個Constructors
GSON StackOverflow的錯誤的Android
public class ObjectClass extends BaseObservable implements Serializable {
@Inject Realm realm;
private String TAG = "ObjectClass";
private String name;
private String address;
public ObjectClass() {
}
public ObjectClass(Context context) {
((MainApplication) context.getApplicationContext()).getMainAppComponent().inject(this);
}
public String getName() {
return name;
}
public void setname(String name) {
this.name = name;
}
@Bindable
public String getAddress() {
return address;
}
public void setaddress(String address) {
this.address = address;
Realmaddress result = realm.where(Realmaddress.class).equalTo("id", address).findFirst();
if (result != null)
Log.e(TAG, result.toString());
}
}
我應該刪除這個構造
public ObjectClass(Context context) {
((MainApplication) context.getApplicationContext()).getMainAppComponent().inject(this);
}
一切工作正常。但是,如果我離開它,我會遇到StackOverFlow錯誤。
String testJson = "{\n" +
"\t\"name\" : \"Test Name\",\n" +
"\t\"address\" : \"Test Address\"\n" +
"}"
Gson gson = new GsonBuilder().setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'").setPrettyPrinting().create();
ObjectClass objectClass = gson.fromJson(testJson, ObjectClass.class);
一切都只是掛起,一段時間後,我收到了StackOverflow
錯誤
編輯1
所以,深調試完畢後。我注意到構造函數不是問題。這是@Inject Realm realm;
所以,我試圖做到這一點@Expose(deserialize = false, serialize = false) @Inject Realm realm;
這也沒有解決它。
EDIT 2
我編輯我GSON Exclusion Strategy
到這個樣子。但是,進入後也不會解決它,如果塊和日誌,它與您使用dependency injection
存在
public class CustomGsonParser {
public static Gson returnCustomParser(){
return new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
if (f.getAnnotation(Inject.class) != null ||
f.getDeclaringClass().equals(RealmObject.class) ||
f.getDeclaringClass().equals(Realm.class)) {
Log.e("GSONBuild", "Exists Inject");
return true;
}
return false;
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
if (clazz.equals(Inject.class))
return true;
return false;
}
})
.create();
}
}
嗯,它正在使用。你是什麼意思?我需要'realm',因爲Object正被'databinder'使用。我可以讓'Gson'省略而不關心它嗎? –
@ItuokeAjanlekoko otherway從這個意義上說,您可以使用接口在這種情況下傳遞/發送您的數據 – Nikhil