Este repositorio es una demostración del uso de kotlinx.serialization
para la serialización y deserialización de datos en formato JSON, utilizando SharedPreferences
como almacenamiento local en una aplicación Android.
root
├── Models // Clases definidas según el diagrama UML
├── MainActivity // Lógica principal de la aplicación
El sistema utiliza SharedPreferences
para guardar y recuperar datos de usuarios en formato JSON. A continuación, se describe el flujo principal:
-
Inicialización de SharedPreferences
val sharedPreferences: SharedPreferences = context.getSharedPreferences("Default", Context.MODE_PRIVATE)
-
Obtención de datos
Los datos se almacenan como un conjunto de cadenas (Set<String>
) en formato JSON:val users = sharedPreferences.getStringSet("usuarios", mutableSetOf())
-
Conversión de JSON a objetos
Cada cadena JSON se convierte en una instancia de la claseUsuarioLoginData
. Esta clase contiene los siguientes atributos:username
: Nombre de usuario.password
: Contraseña.idUsuario
: identificador.isAdmin
: boleano si es admin o no.
La contraseña del admin es "admin" y el nombre de usuario es "admin". y su Id es 1 Ejemplo de deserialización:
for (user in users) { val usuario = Json.decodeFromString<UsuarioLoginData>(user) println(usuario) }
-
Obtener las probabilidades de los juegos Devuelve las probabilidades de los juegos en formato JSON.
val probabilidades = sharedPreferences.getString("probabilidades", "")
-
Conversión de JSON a objetos Cada cadena JSON se convierte en una instancia de la clase
Probabilidades
. Esta clase contiene los siguientes atributos:ganarMomios
: Probabilidad de la ruleta. Tipo de dato Float.ganarMaquinas
: Probabilidad de las tragamonedas Tipo de dato Float.ganarRuleta
: Probabilidad de las tragamonedas Tipo de dato Float. Ejemplo de deserialización:
val probabilidades = Json.decodeFromString<Probabilidades>(probabilidades)
Se gestiona información interna específica para cada usuario mediante un identificador único (IdUsuario
):
-
Inicialización de SharedPreferences
val sharedPreferences: SharedPreferences = context.getSharedPreferences(IdUsuario, Context.MODE_PRIVATE)
-
Obtención de datos
Los datos internos se almacenan como un conjunto de cadenas (Set<String>
) en formato JSON:val IDusuario = sharedPreferences.getString("Idusuario", "") val nombre = sharedPreferences.getString("nombre", "") val contraseña = sharedPreferences.getString("contraseña", "") val idioma = sharedPreferences.getString("idioma", "") val saldo = sharedPreferences.getFloat("saldo", 0.0f) val esAdmin = sharedPreferences.getBoolean("esAdmin", false) val historial = sharedPreferences.getStringSet("historial", mutableSetOf())
-
Conversión de JSON a objetos
Cada cadena JSON se convierte en una instancia de la claseHistorial
.
Ejemplo de deserialización:for (item in historial) { val historial = Json.decodeFromString<Historial>(item) println(historial) }
Al hacer pull es necesario sincronizar el proyecto con el Gradle, presionando sobre el icono de elefante en la parte superior derecha del IDE
- Kotlin
- kotlinx.serialization
- SharedPreferences: Almacenamiento de datos persistente en Android.
- Documentación oficial de kotlinx.serialization
- Diagrama de clases UML
- Documentación oficial de SharedPreferences en Android