0Pricing
Kotlin Academy · Lección

Codificación y decodificación JSON

Convierta a JSON y desde JSON

Codificación y decodificación JSON es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.

El objeto Json

El objeto Json es el núcleo de la codificación y la decodificación. La instancia predeterminada está lista para usarse, o puede crear una instancia configurada.

import kotlinx.serialization.json.Json

val json = Json

Codificar en una cadena

Use encodeToString para convertir un objeto en una cadena JSON.

import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json

@Serializable
data class Book(val title: String, val pages: Int)

fun main() {
    val book = Book("Kotlin in Action", 360)
    val text = Json.encodeToString(book)
    println(text)
}

Decodificar desde una cadena

Use decodeFromString para analizar JSON y convertirlo de nuevo en un objeto. El tipo de destino se infiere o se indica explícitamente.

import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json

@Serializable
data class Book(val title: String, val pages: Int)

fun main() {
    val text = "{\"title\":\"Atomic Kotlin\",\"pages\":500}"
    val book = Json.decodeFromString<Book>(text)
    println(book.title)
}

Codificar listas

Las colecciones se codifican automáticamente. Una lista de objetos serializables se convierte en una matriz JSON.

import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json

@Serializable
data class Tag(val name: String)

fun main() {
    val tags = listOf(Tag("kotlin"), Tag("json"))
    println(Json.encodeToString(tags))
}

Impresión con formato

Configure un constructor Json { } para activar la salida con sangría, que resulta útil para registrar información y depurar.

import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json

@Serializable
data class Point(val x: Int, val y: Int)

val pretty = Json { prettyPrint = true }

fun main() {
    println(pretty.encodeToString(Point(1, 2)))
}

Ignorar claves desconocidas

De forma predeterminada, la decodificación falla si el JSON contiene claves que no están en su clase. Establezca ignoreUnknownKeys = true para omitirlas, algo práctico cuando las API evolucionan.

import kotlinx.serialization.json.Json

val lenient = Json { ignoreUnknownKeys = true }

Codificar valores predeterminados

De forma predeterminada, las propiedades cuyo valor coincide con el valor predeterminado no se escriben. Active encodeDefaults = true para incluirlas siempre.

import kotlinx.serialization.json.Json

val withDefaults = Json { encodeDefaults = true }

Trabajar con JsonElement

Para trabajar con JSON dinámico, puede analizarlo como un árbol de JsonElement en lugar de convertirlo a una clase tipada.

import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement

fun main() {
    val element: JsonElement = Json.parseToJsonElement("{\"a\":1}")
    println(element)
}

Leer campos de JsonObject

Convierta un JsonElement en JsonObject y acceda a los campos mediante su clave; después, convierta los valores primitivos.

import kotlinx.serialization.json.Json
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import kotlinx.serialization.json.int

fun main() {
    val obj = Json.parseToJsonElement("{\"a\":1}").jsonObject
    val a = obj["a"]!!.jsonPrimitive.int
    println(a)
}

Codificación y decodificación de ida y vuelta

Codificar y después decodificar debería devolver un objeto igual al original: un recorrido de ida y vuelta. Es una excelente forma de comprobar rápidamente la coherencia de su modelo.

import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json

@Serializable
data class P(val x: Int)

fun main() {
    val original = P(42)
    val back = Json.decodeFromString<P>(Json.encodeToString(original))
    println(original == back)
}

Errores comunes de decodificación

Preste atención a estas excepciones de tiempo de ejecución:

  • SerializationException: Unexpected JSON token — JSON con un formato incorrecto
  • Falta un campo obligatorio — al JSON le falta una propiedad sin valor predeterminado
  • Clave desconocida — desactive el modo estricto con ignoreUnknownKeys

Comprobación rápida

Su API añade con frecuencia nuevos campos JSON. ¿Qué configuración evita que la decodificación falle?

Resumen

Ahora puede convertir objetos en JSON y viceversa:

  • encodeToString / decodeFromString
  • Configurar con Json { }: prettyPrint, ignoreUnknownKeys, encodeDefaults
  • Analizar JSON dinámico mediante JsonElement

A continuación: serializadores personalizados para tipos no compatibles.

Preguntas frecuentes

¿La lección «Codificación y decodificación JSON» es gratis?

Sí — el texto completo de «Codificación y decodificación JSON» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Codificación y decodificación JSON»?

Convierta a JSON y desde JSON Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Kotlin Academy?

No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Codificación y decodificación JSON»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?

Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Configuración de kotlinx.serialization
  2. Clases serializables
  3. Codificación y decodificación JSON
  4. Serializadores personalizados
← Volver a Kotlin Academy