Skip to main content
Volver a herramientas

JSON to Kotlin Data Class

Genera data classes de Kotlin con kotlinx.serialization desde un JSON

Acerca de JSON to Kotlin Data Class

Construye data classes con @Serializable para kotlinx.serialization, con propiedades en camelCase y @SerialName cuando el nombre en Kotlin difiere de la clave. Los números enteros pasan a Long, los decimales a Double, los null y las claves que faltan en algunos elementos de un array a tipos anulables con null por defecto, y los valores mixtos o vacíos usan JsonElement. Los tipos salen de una sola muestra, así que revísalos antes de llevar los modelos a un proyecto Android o Ktor; todo se ejecuta en tu navegador.

Categoría: Conversores.

Preguntas frecuentes

¿Qué dependencias necesita el código Kotlin generado?

▾

La biblioteca kotlinx-serialization-json y el plugin de compilador de serialización de Kotlin (org.jetbrains.kotlin.plugin.serialization en Gradle). Sin el plugin las clases compilan igual, pero Json no encuentra un serializador para ellas en tiempo de ejecución.

¿Por qué los números enteros se tipan como Long y no como Int?

▾

Los IDs y las marcas de tiempo en milisegundos suelen superar el límite de Int de 2.147.483.647, y Long admite cualquier entero hasta 2^63, así que la deserialización no se desborda. Cambia a Int donde los valores sean pequeños, y a Double donde un campo escrito como 1.0 en la muestra también pueda tener decimales.

¿Cómo deserializo JSON en las clases generadas?

▾

Llama a Json.decodeFromString<Root>(texto), o a Json.decodeFromString<RootList>(texto) cuando el JSON es un array en el nivel superior. El Json por defecto rechaza las claves que no están en la clase, así que usa Json { ignoreUnknownKeys = true } si la API puede agregar campos.

¿Cómo se manejan claves como my-key, class o 2fa?

▾

Se convierten en nombres de propiedad válidos y conservan la clave original en @SerialName, así que my-key pasa a ser myKey y 2fa pasa a _2fa. Las palabras reservadas de Kotlin, como class o in, se escriben entre backticks, y los nombres que coinciden tras la conversión reciben un sufijo numérico.

Herramientas relacionadas