Gson en Kotlin
uso de Gson en Kotlin
Gson (también conocido como Google Gson) es una biblioteca de código abierto para el lenguaje de programación Java y para Android que permite la conversión entre objetos Java y su representación en notación JSON de una manera sencilla, simplemente invocando los métodos toJson() o fromJson().
Ejemplo de uso: Gson en Wikipedia
Proyecto en GitHub: google-gson
Documentación de Gson: Javadoc
Dependencias en Gradle:
implementation 'com.google.code.gson:gson:2.10.1'
Ejemplo: Lista de contactos usando Gson
contacts.json
{ "contactos": [ { "nombre": "Angelina Jolie", "direccion": "calle los remedios, 29007, malaga", "email": "angie@gmail.com", "telefono": { "casa": "952245407", "movil": "603459530", "trabajo": "951230246" } }, { "nombre": "Nikole Kidman", "direccion": "calle hilera, 29010, malaga", "email": "nikole@gmail.com", "telefono": { "casa": "952233407", "movil": "625459540", "trabajo": "951230246" } }, { "nombre": "Jennifer Lopez", "direccion": "calle larios, 29002, malaga", "email": "jenny@gmail.com", "telefono": { "casa": "951065407", "movil": "628659550", "trabajo": "952002146" } } ] }
Añadir contacts.json a la carpeta assets
¿clase Phone?
¿clase Contact?
¿clase Person?
Ayuda: jsonschema2pojo
class Phone { @SerializedName("casa") @Expose lateinit var casa: String @SerializedName("movil") @Expose lateinit var movil: String @SerializedName("trabajo") @Expose lateinit var trabajo: String }
Contact.kt
class Contact { @SerializedName("nombre") @Expose lateinit var nombre: String @SerializedName("direccion") @Expose lateinit var direccion: String @SerializedName("email") @Expose lateinit var email: String @SerializedName("telefono") @Expose lateinit var telefono: Phone }
Person.kt
class Persona { @SerializedName("contactos") @Expose lateinit var contactos: List<Contact> }
o
Persona.kt
class Persona { @SerializedName("contactos") @Expose lateinit var contactos: List<Contacto> }
obtenerContactos()
fun obtenerContactos(): ArrayList<Contacto> { var contactos: ArrayList<Contacto> = ArrayList() lateinit var contenido: String lateinit var gson: Gson lateinit var persona: Persona try { if (!binding.switch1.isChecked) { // Analizar contactos contenido = leerAsset(applicationContext, CONTACTOS) contactos = analizarContactos(contenido) } else { // usar Gson } } catch (e: IOException) { Log.e("Error: ", e.message.toString()) mostrarMensaje("Error: " + e.message.toString()) } catch (e: JsonSyntaxException) { Log.e("Error: ", e.message.toString()) mostrarMensaje("Error: " + e.message.toString()) } catch (e: JSONException) { //e.printStackTrace(); Log.e("Error: ", e.message.toString()) mostrarMensaje("Error: " + e.message.toString()) } return contactos }
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.