RealmでListやMapを保持

Realm for Androidでの話です

Realmではオブジェクトを利用して、データの永続化が行うことが可能です。

しかし、オブジェクト内のフィールドとして、ListやMapを保持するためにはひと工夫が必要でした。

RealmListを利用するとListの形で保持することはできます。これにより一対多の関係を作ることができます

これはこれでいいのですが、単純にListみたいにしたい場合はエラーになります

今回どうしても、Listにしたかったので、JSON形式で保存することにしました

@IgnoreでListはデータ永続化の対象外にしました。そのうえで、代入する場合、ListをJSONに変換して、itemsに代入します。取り出すときにはitemのJSONをListに変換して取り出します。永続化自体はString itemsでJSON形式の文字列で行われています。実際には細かいところでNULLチェックなどが必要になりますね

このアイディアの応用でシンプルな形式ならMapなどもなんとか行けます。

もっといいアイディアがあるはずだと思いますが、まずはこれで実現できました。