1. 继承RealmObject的类的属性都必须设置Getter和Setter,否则编译不通过,如下图:
2. 继承RealmObject的类序列化和反序列化的时候需排除RealmObject中的属性,否则将因为类RealmObject涉及父子轮调,导致死循环
解决办法:
使用ExclusionStrategy(排除策略)实现对类或者域的序列化排除,如下:
public static void Test6(){
Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaringClass().equals(RealmObject.class);
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
}).create();
String jsonArray = "{\"date\":\"20160726\",\"stories\":[{\"id\":8608704,\"title\":\"为了认出那张脸,你知道大脑有多努力吗?\"}]}";
ZhihuJson zhihuJson = gson.fromJson(jsonArray, ZhihuJson.class);
Log.e("GSON", gson.toJson(zhihuJson));
}