アンドロイド:SharedPreferencesに保存マップ?

国家スラック:

私はにデータを保存する必要がありSharedPreferences、私はこのようなオブジェクトを持っているような方法で:

{
    "days": [
        {
            "exercises": [
                {
                    "name": "Bench Press",
                    "sets": 3,
                    "reps": 8
                },
                {
                    "name": "Skull Crushers",
                    "sets": 3,
                    "reps": 8
                },
                {
                    "name": "Flys",
                    "sets": 3,
                    "reps": 8
                }
            ]
        },
        {
            "exercises": [
                {
                    "name": "Bench Press",
                    "sets": 3,
                    "reps": 8
                },
                {
                    "name": "Skull Crushers",
                    "sets": 3,
                    "reps": 8
                },
                {
                    "name": "Flys",
                    "sets": 3,
                    "reps": 8
                }
            ]
        }
    ]
}

私は、オブジェクトから引くと、オブジェクトに追加する必要があります。私はあなたにマップを保存することはできませんことを知っていますSharedPreferences私は私の最善の策は、使用することを考え始めていますObjectOutputStreamが、それは内部メモリを使用するための最善の策であるかどうかはわかりません。私はちょうど私の最良の選択肢が何であるかについての指針を探していますね。

編集:何からAdvice-Dog言って、私は私の最善の策は、使用することです考えていますgsonだから私はしたいとき(たとえば)私は最初、設定から対象物をつかむからそれを変換することを「日」の2番目のインデックスに別のエクササイズを追加することをことを意味しないgsonし、運動を追加したオブジェクトに、当時それを変換gson環境設定を上書きしますか?私はそれが賢明である場合だけで、これは何をすべきかであるかどうかを知りたいと、これは悪いIであるつもりはありません。

アドバイス - 犬:

Androidの中で、より複雑なタイプを保存するとき、私は使用してお勧めしますgsonGsonは、GoogleのJSON解析ライブラリで、あなたはJSONを使用していない場合でも、あなたは変換することができますObjectsJSON文字列に変換し、保存することを簡単に。

たとえば、あなたはあなたのリストに変換することができますObjectsString、このような。

val list : List<MyObject>  // ... add items to your list

// Convert to JSON

val string = gson.toJson(list)

// Store it into Shared Preferences
preferences.putString("list", string).apply()

そして、あなたは簡単にこのようなリストにそれを取り戻すことができます。

// Fetch the JSON 

val string = preferences.getString("list", "")

// Convert it back into a List

val list: List<MyObject> = gson.fromJson(string, object : TypeToken<List<MyObject>>() {}.type)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=119923&siteId=1