2015-10-08 7 views
0

В этом вопросе How can I serialize a RealmObject to JSON in Realm for Java? Представитель области сказал, что через GSON можно сериализовать объект области. Не могли бы вы объяснить, как это сделать? Я пробовал это.Как преобразовать RealmResult в Json с использованием библиотеки Gson

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

Но StackOverflowError произошло.

ответ

0

Чтобы сделать сериализацию GSON с Realm, вам нужно будет написать пользовательский JsonSerializer для каждого объекта, который может быть сериализован, и зарегистрировать его как TypeAdapter.

Вы можете увидеть пример в этом суть: https://gist.github.com/cmelchior/ddac8efd018123a1e53a

+0

как я могу передать RealmResult и как он будет возвращать JSON строку? Пожалуйста, объясни. Я не могу получить из приведенного выше примера. Спасибо –

+0

Извините, я неправильно прочитал ваш вопрос в первый раз. Я изменил ответ. –

0

Чем проще способ создать List<Dog> с RLMResult<Dog>, а затем сериализация этот список с Gson.

0

Вы получаете StackOverflow becouse из Gson на основе отражения, но управляемый объект (RealmObjectProxy) не имеют реальных полей и полей родителя не null s также некоторые прокси-полей produses рекурсию в распознавании типа области Gson это происходит в $GsonTypes классе.

Для сериализации RealmObject вы можете использовать один из этих вариантов:

  1. Написать свой собственный адаптер для каждого RealmObject Чайлдса, который будет принимает добытчик данных с использованием.

  2. Звоните realm.copyFromRealm(realmObject) перед сериализацией. Это выглядит как new Gson().toJson(realm.copyFromRealm(realmObject))

  3. Использования библиотека на основе 2-го варианта RealmSupportForGson

Надеется, что это помогает

Смежные вопросы