Android: Guardar mapa para SharedPreferences?

Slack Nación:

Necesito guardar datos SharedPreferencesde tal manera en la que tengo un objeto como éste:

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

Voy a necesitar para tirar del objeto y añadir al objeto. Sé que no se puede guardar mapas en SharedPreferences. Estoy empezando a pensar que mi mejor opción es utilizar ObjectOutputStreampero no estoy seguro de si esa es la mejor apuesta para utilizar la memoria interna. Supongo que sólo estoy en busca de orientación en cuanto a lo que mis opciones son mejores.

edit: de lo Advice-Dogdicho, estoy pensando en mi mejor opción es utilizar gson. ¿Significa eso que cuando quiero (por ejemplo) añadir otro ejercicio para el segundo índice de "días" que primero se agarra el objeto de las preferencias, convertirlo a partir gsonde un objeto, a continuación, añadir el ejercicio, a continuación, convertir de nuevo para gson, a continuación, sobrescribir las preferencias? No estoy diciendo que esto es malo sólo quiero saber si esto es lo que debe hacerse y si es aconsejable.

Consejos-perro:

Al guardar tipos más complejos en Android, se recomienda usar gson. Gson es la biblioteca de análisis JSON de Google, e incluso si no se está usando JSON, puede convertir su Objectsen un JSON de cuerdas, y almacenar fácilmente.

Por ejemplo, puede convertir su lista de Objectsen una Stringcomo esta.

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

Y entonces se puede obtener fácilmente de nuevo en una lista como esta.

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=119929&siteId=1
Recomendado
Clasificación