要将JSON反序列化为RealmObject,请使用以下之一:
假设您有以下类定义:
@RealmClass
public class Foo extends RealmObject{
private String name;
public void setName(String name){ this.name = name}
public String getName(){ return this.name}
}
并且一个类似于这样的json有效载荷:
String json = "{\"name\":\"bar\"}";
Foo fooObject= realm.createObjectFromJson(Foo.class, json);
//or
String jsonArray = "[{\"name\":\"bar\"},{\"name\":\"baz\"}]";
RealmList<Foo> fooObjects = realm.createAllFromJson(Foo.class, jsonArray);
然而,realm-core并不直接支持反向操作。所以我是这样解决的。我试图使用GSON,但最终写了太多我自己都不理解的代码,所以我实现了自己的适配器。问题在于RealmObjects不是'realm' java.lang.Object
。
创建一个适配器,它接受您的realm对象实例并返回其JSON表示形式。
例如.
public class RealmJsonAdapter{
public JSONObject toJson(Foo foo){
JSONObject obj = new JSONObject();
obj.putString("name",foo.getName());
return obj;
}
}
现在您可以在类中使用此适配器将您的
RealmObject
序列化为
JSON。最好将适配器设置为接口,以便让调用者(可能是您自己)传递他们想要使用的适配器。然后,您可以调用例如
adapter.toJSON(realmObjectInstance)
,并获得您的JSONObject实现,因为您只关心JSON而不是RealmObject。
注意:这个解决方案有点过时了。RealmObjects现在是真正的Java对象,所以您应该能够毫无问题地与GSON一起使用它。只需确保您使用的是0.89或更高版本,一切都会正常工作。
realm.copyFromRealm(realmObject)
。我已经相应地编辑了帖子。 - EpicPandaForce