Serialización 1.0 vía Kotlin lanzado (Kotlin ❤ Android) | autor: Sachin Rajput | Bits móviles nativos Octubre de 2020

Serialización a través del núcleo de Kotlin

Hola, desarrolladores de Android 🙂 Espero que todos tengan éxito.

Hablemos hoy sobre las formas de serializar. En todas nuestras carreras, hemos utilizado la serialización de una forma u otra. En su mayor parte, usamos la serialización para analizar la respuesta que recibimos de la API del lado del servidor e insertamos POJO en nuestras clases.

Caso de uso básico: para análisis JSON en objetos Java / Kotlin

En general, estas son las herramientas que más hemos utilizado hasta ahora:

GSON de Google

MOSHI desde la plaza, etc.

Ahora hemos visto que Kotlin se está convirtiendo en el idioma oficial para desarrollar aplicaciones en nuestro sistema operativo Android favorito. y hemos visto clases de datos y algunas otras cosas, sin embargo, en algún momento usamos GSON o MOSHI o alguna herramienta similar en nuestras aplicaciones de Android.

Ahora Kotlin ha creado su propia biblioteca de serialización y está listo para producir con el lanzamiento. Serialización de Kotlinx 1.0

Kotlinx. Publicación por entregas es puro Kotlin :), y podemos usar esta biblioteca de Kotlin en todos los objetivos de la plataforma Kotlin como Kotlin para Android, Kotlin nativo o Ktor. Funcionará mejor para las tareas de serialización y deserialización.

En este apartado crearemos una aplicación muy básica para comprobar cómo la añadimos a nuestra aplicación, y veremos algún código básico para comprobar sus funciones básicas.

El uso de la serialización de Kotlin requiere el compilador de Kotlin 1.4.0 o mas alto. Por lo tanto, si está utilizando una versión anterior de Kotlin, puede actualizar a 1.4.0

Paso 1: abra build.gradle (nivel de proyecto): –

Primero actualice la versión de Kotlin a 1.4.0 o superior usaremos 1.4.10 y agregue esta ruta a la clase de serialización de Kotlinx.

build.gradel nivel de proyecto

Paso 1: abra build.gradle (nivel de proyecto): –

Ahora al nivel de tu aplicación build.gradle agregue la serialización y la dependencia del complemento.

y ahora sincronizar el proyecto.

Ha agregado con éxito Kotlinx-Serialization a su proyecto 🙂

Cómo usarlo ahora. tomemos un ejemplo simple donde tenemos dos pantallas.

Para que cada clase se serialice usando Kotlin Complier, debemos usar @ Serializable anotación.

Ahora considere un caso de uso muy simple:

En la pantalla 1 podemos agregar algunos elementos a cualquier lista , por ejemplo, supongamos que tenemos una clase Fruta. y la entrada del usuario al nombre de la fruta se realiza a través de cualquier diálogo. y creando un objeto Fruit. podemos ver este objeto como JSON a través de Kotlinx. Serialización como esta –

val fruit = Fruit(et.text.toString().trim())
Log.d(TAG,"showing_fruit_obj_as_json ${Json.encodeToString(fruit)}")

salida –

{"name":"Apple"}

Ahora que hemos agregado todos estos valores ingresados ​​por el usuario a la lista y queremos pasarlos como un elemento String o JSON a la siguiente pantalla, podemos hacerlo así:

En la pantalla 2 mostramos todas las frutas agregadas a nuestra lista de menú.

val fruit = Fruit(et.text.toString().trim())val fruits = arrayListOf<Fruit>()
fruits.add(fruit)
...
...
fruits.add(fruit)
Log.d(TAG,"showing_list_as_json ${Json.encodeToString(fruits)}")

salida –

[{"name":"Apple"},{"name":"Mango"},{"name":"Watermelon"}]

De esta forma podemos usar Kotlinx.Serialization para imprimir cualquier objeto o cualquier lista de objetos como JSON.

También podemos convertir JSON a cualquier objeto relevante.

En este proceso anterior, pasamos esta lista de todas las frutas agregadas de screen1 a screen2 como una cadena que pasamos Json.encodeToString(fruits)

private fun showMenu() {
Log.d(TAG,"inside_show_menu${Json.encodeToJsonElement(fruits)}")
startActivity(Intent(this,MenuActivity::class.java).putExtra(
Constants.FRUITS_LIST,Json.encodeToString(fruits)
))
}

luego en la pantalla 2 podemos recibir esta lista y convertirla según nuestras necesidades.

val fruitsListAsString = Json.encodeToString(intent.getStringExtra(Constants.FRUITS_LIST))
Log.d(TAG, "show_list_as_string $fruitsListAsString")

val fruitsListAsObj = Json.encodeToJsonElement(fruitsListAsString)
Log.d(TAG, "show_list_as_JSON $fruitsListAsObj")

salida-

as string - [{"name":"Apple"},{"name":"Mango"}]
as JSON - "[{"name":"Apple"},{"name":"Mango"}]"

Estos son algunos ejemplos básicos de conversión de objetos en una cadena y viceversa. En las siguientes secciones, cubriremos las llamadas de red y las conversiones utilizando Kotlinx.Serialization.

Código para el ejemplo básico incluido en esta sección(aplicación ficticia usando Kotlinx.Serialization)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *