Android: Enregistrer la carte à SharedPreferences?

Slack Nation:

Je dois enregistrer des données SharedPreferencesde telle sorte où j'ai un objet comme celui - ci:

{
    "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
                }
            ]
        }
    ]
}

Je vais devoir tirer de l'objet et ajouter à l'objet. Je sais que vous ne pouvez pas enregistrer les cartes à SharedPreferences. Je commence à penser que mon meilleur pari est d'utiliser , ObjectOutputStreammais je ne suis pas sûr que ce soit le meilleur pari d'utiliser la mémoire interne. Je suppose que je suis en train de chercher des conseils quant à ce que mes meilleures options.

edit: d'après ce que Advice-Dogdit, je pense mon meilleur pari est d'utiliser gson. Cela veut- il dire que quand je veux (par exemple) ajouter un autre exercice au second indice de « jours » que je vais d' abord saisir l'objet de préférences, le convertir à partir gsond'un objet, puis ajoutez l'exercice, puis reconvertir à gson, puis remplacer les préférences? Je ne dis pas que cela est mauvais je veux juste savoir si c'est ce qu'il faut faire et s'il est conseillé.

Conseils-Dog:

Lors de l' enregistrement des types plus complexes dans Android, je suggère d' utiliser gson. Gson est la bibliothèque d'analyse JSON de Google, et même si vous ne l' utilisez JSON, vous pouvez convertir votre Objectsen une chaîne JSON, et stocker facilement.

Par exemple, vous pouvez convertir votre liste Objectsen un Stringcomme celui - ci.

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()

Et vous pouvez facilement obtenir de nouveau dans une telle liste.

// 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)

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=119925&siteId=1
conseillé
Classement