Comment puis-je sérialiser un RealmObject de JSON dans le Domaine de Java?
Je suis la mise en œuvre de la bd pour mon Application et je suis en train de "se connecter" à mon RESTE de l'interface. Les données JSON et avec le nouveau format JSON (comme le Domaine de 0,76) je peux jeter le JSON à mon Realm.createObjectFromJson(MyType.class, jsonString)
et il crée l'idéal obejcts et RealmLists.
Mais comment puis-je faire le contraire? Qui est, prendre un RealmObject et sérialiser JSON? Il doit également sérialiser un RealmList à l'intérieur de cet objet.
Vous devez vous connecter pour publier un commentaire.
Chrétien de Domaine ici.
Domaine pour Android ne dispose pas actuellement une quelconque de ces méthodes, bien que le noyau de base de données prend en charge la sérialisation JSON, donc pour l'instant vous devez le faire manuellement, ou utilisez un outil 3ème partie comme GSON (mise en garde, je havn'pas testé ce scénario encore).
Simplement, tout ce que vous devez faire est:
realm.copyFromRealm(realmObject)
. J'ai édité le post en conséquence.copyFromRealm()
appelle celui qui prend un max de profondeur paramètre avecInteger.MAX_VALUE
(et si vous ne voulez pas les listes, utilisezmaxDepth
param avec0
)pour désérialiser JSON dans RealmObject l'utilisation d'une des façons suivantes
dire que vous avez une définition de classe comme ceci
et une charge utile json comme ceci:
Par contre, l'inverse n'est pas pris en charge nativement dans le royaume-core. donc, c'est comment je travaille autour d'elle. j'ai tenté d'utiliser GSON, mais il a fini par écrire trop grand nombre de codes que j'ai moi-même ne pas comprendre, donc j'ai mis en place mon propre de l'adaptateur de ce genre.Le problème est RealmObjects ne sont pas 'monde'
java.lang.Object
.créer un adaptateur que prend l'exemple de votre royaume à l'objet et au retour de sa représentation JSON.
exemple.
vous pouvez maintenant utiliser cette carte dans vos classes pour sérialiser vous
RealmObject
àJSON. prefferably de vous faire la carte d'une interface de sorte que vous laissez les appelants (peut-être vous-même) de vous passer la carte à utiliser.
vous pouvez ensuite appeler le dire,
adapter.toJSON(realmObjectInstance)
. et obtenir votre JSONObject mise en œuvreaprès tout vous vous souciez seulement de l'JSON et non pas le RealmObject.
NOTE
Cette solution est un peu ancienne. RealmObjects sont maintenant de vrais objets java, de sorte que vous devriez être capable de l'utiliser avec GSON avec pas de problèmes. Juste assurez-vous que vous utilisez la version 0,89 ou plus tard et tout fonctionnera correctement.
Suivants est comment vous pouvez faire cela avec GSON bibliothèque.
Supposons que nous avons les éléments suivants json réponse du serveur :
Pour cet objet Json nous créer une classe d'assistance avec des propriétés correspondantes
Maintenant dans la suite de jsonReply est la chaîne de caractères contenant la réponse du serveur
Et le Royaume de l'Objet de Données
new RealmDataObject()
et remplissez les données ou encore plus simple, laissez Gson faire le travail (comme dans votre exemple avec le HelperClass)jsonReply
à votrerealm
royaume.createAllFromJson(RealmDataObject.class, jsonReply); Vous n'avez pas besoin de convertir quoi que ce soit. Il suffit de jeter votre chaîne, que vous obtenez à partir du réseau à votre royaume...Essayer cette