如何使用Gson库将RealmResult转换为Json

时间:2015-10-08 11:19:03

标签: json gson realm realm-list

在这个问题中How can I serialize a RealmObject to JSON in Realm for Java?领域代表说可以通过GSON序列化领域对象。你能解释一下吗? 我试过这个。

 RealmResults<Dog> myDogs=realm.where(Dog.class).findAll();
 new Gson().toJson(myDogs);

但是发生了StackOverflowError。

3 个答案:

答案 0 :(得分:0)

要使GSON序列化与Realm一起使用,您需要为每个可以序列化的对象编写一个自定义JsonSerializer,并将其注册为TypeAdapter。

您可以在此要点中查看示例:https://gist.github.com/cmelchior/ddac8efd018123a1e53a

答案 1 :(得分:0)

更简单的方法是使用List<Dog>创建RLMResult<Dog>,然后使用Gson将此列表序列化。

答案 2 :(得分:0)

根据反射得到StackOverflow Gson但是托管对象(RealmObjectProxy)没有实际字段,父字段null也是代理字段的一部分在Gson类中发生$GsonTypes字段类型识别时产生递归。

要序列化RealmObject,您可以使用以下选项之一:

  1. 为每个使用getter获取数据的RealmObject子项编写自己的适配器。

  2. 序列化前调用realm.copyFromRealm(realmObject)。它看起来像new Gson().toJson(realm.copyFromRealm(realmObject))

  3. 根据第二个选项RealmSupportForGson

  4. 使用库

    希望有所帮助