Serializar y deserializar JSON usando GSON Library en Android

Cuando necesitamos enviar algunos datos de una actividad a otra, podemos usar intentos con la función putExtra() . Pero putExtra admite tipos de datos primitivos. Entonces, si necesitamos pasar y el usuario define el objeto, primero debemos serializarlo y luego enviarlo al destino. Mientras recibimos los datos, necesitamos deserializarlos. Serializaremos y deserializaremos objetos a JSON utilizando la biblioteca Gson.

Implementación paso a paso

Paso 1: Cree un nuevo proyecto en Android Studio usando kotlin.

Paso 2: crear una clase de datos definida por el usuario

Kotlin

package com.ayush.serialize_deserialize
  
data class StudentInfo(val id: Int, val Name :String, val RollNo : Int)

Paso 3: Crear una nueva actividad donde enviaremos los datos

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".SecondActivity">
    <TextView
        android:id="@+id/tvId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ID"
        android:textStyle="bold"
        android:textColor="#7CB342"
        android:textSize="22sp"/>
    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="NAME"
        android:textStyle="bold"
        android:textColor="#7CB342"
        android:layout_margin="4dp"
        android:textSize="22sp"/>
    <TextView
        android:id="@+id/tvRoll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ROLL"
        android:textStyle="bold"
        android:textColor="#7CB342"
        android:textSize="22sp"/>
</LinearLayout>

Paso 4: ahora crearemos un objeto de clase definida por el usuario y lo convertiremos en datos JSON usando la función Gson().toJson() y lo enviaremos a la intención.

Kotlin

package com.ayush.serialize_deserialize
  
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.google.gson.Gson
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val stu01 = StudentInfo(1,"AMAN",10)
        val json = Gson().toJson(stu01)
        val intent = Intent(this,SecondActivity::class.java)
        intent.putExtra("data",json)
        startActivity(intent)
    }
}

Paso 5: Extraeremos datos de la intención usando el método getExtra() y los deserializaremos usando Gson().fromJson().

Kotlin

package com.ayush.serialize_deserialize
  
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import com.google.gson.Gson
  
class SecondActivity : AppCompatActivity() {
    lateinit var data : StudentInfo
    lateinit var tvId : TextView
    lateinit var tvName : TextView
    lateinit var tvRoll : TextView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
  
        tvId = findViewById(R.id.tvId)
        tvName = findViewById(R.id.tvName)
        tvRoll= findViewById(R.id.tvRoll)
  
       val json = intent.getStringExtra("data")
        data = Gson().fromJson(json,StudentInfo::class.java)
  
        tvId.text = data.id.toString()
        tvName.text = data.Name
        tvRoll.text = data.RollNo.toString()
    }
}

Entonces, nuestra aplicación está lista y podemos ver el resultado.

Producción:

Producción

Publicación traducida automáticamente

Artículo escrito por ayushpandey3july y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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