私はSerialize
に私がしようStackOverflow
エラーいつでも私はGson StackOverflowのエラーアンドロイド
public ObjectClass(Context context) {
((MainApplication) context.getApplicationContext()).getMainAppComponent().inject(this);
}
すべてが正常に動作します。このコンストラクタを削除する必要があります2 Constructors
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());
}
}
を持っている私のPOJO Object
へJSON String
を取得します。しかし、私はそれを残して、私は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);
すべてがちょうどハングしてしばらくした後、私は深いデバッグの後、1
のでStackOverflow
エラー
EDITを取得します。私はコンストラクタが問題ではないことに気づいた。これは@Inject Realm realm;
だったので、私はこれをやろうとしました@Expose(deserialize = false, serialize = false) @Inject Realm realm;
これも修正されていません。
EDIT 2
私はこのように私のGSON Exclusion Strategy
を編集しました。しかし、それはそれはそれは
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();
}
}
さて、それは使用されています。それ以外の意味は?オブジェクトが 'databinder'によって使用されているので、' realm'が必要です。 'Gson'はそれを省略し、それ自体には関係しないようにすることはできますか? –
@ItuokeAjanlekoko他の意味では、あなたはこのケースであなたのデータを渡したり送るためにインターフェイスを使うことができます – Nikhil