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 = JsonCodificar 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
- Configuración de kotlinx.serialization
- Clases serializables
- Codificación y decodificación JSON
- Serializadores personalizados