JSON a Kotlin
Genera data classes de Kotlin a partir de una muestra JSON para kotlinx.serialization, Moshi o Gson.
Entrada JSON
Código generado
Escribe JSON a la izquierda para generar un tipo a partir de él.
¿Qué es JSON a Kotlin?
Un conversor de JSON a Kotlin convierte una muestra de un payload JSON en data classes de Kotlin que coinciden con su estructura. La data class es la forma canónica de Kotlin de modelar una respuesta JSON: declarar las propiedades en el constructor basta para que el compilador genere equals, hashCode, toString, copy y la desestructuración, así que un modelo que en Java sería un POJO largo se vuelve un puñado de líneas. Esta es la forma que todas las librerías JSON de Kotlin esperan — kotlinx.serialization, Moshi y Gson enlazan todas en data classes — lo que hace que generarlas desde un payload real sea la ruta más rápida de una respuesta de API a Kotlin tipado y null-safe. También elimina el frecuente bug de integración en Android donde un nombre de propiedad difiere de la clave JSON por un carácter y se deserializa en silencio como null.
Cómo usar JSON a Kotlin
- Pega una respuesta JSON representativa en el panel izquierdo — las propiedades generadas coinciden exactamente con las claves de esa muestra.
- Fija un nombre de clase raíz sobre la salida (por defecto "Root"); cada objeto anidado se convierte en su propia data class con el nombre de la clave que lo contiene.
- Copia las clases a tu proyecto y añade lo que necesite tu librería JSON — @Serializable para kotlinx.serialization, o nada en absoluto para Moshi y Gson con reflexión.
- Cambia el selector de lenguaje sobre la salida para emitir la misma forma como un record de Java, un struct de Go o una interfaz TypeScript en otro lenguaje soportado.
Ejemplos
Objeto plano como data class
Entrada
{"id": 1, "name": "Ada", "active": true}
Salida
data class Root( val id: Int, val name: String, val active: Boolean, )
Objeto anidado y una lista
Entrada
{"user": {"id": 1, "name": "Ada", "roles": ["admin"]}}
Salida
data class User( val id: Int, val name: String, val roles: List<String>, ) data class Root( val user: User, )
Errores comunes
- Dejar propiedades no anulables cuando la API las omite — kotlinx.serialization lanza una MissingFieldException, y Gson puede colocar silenciosamente un null en una propiedad no nula, rompiendo la garantía de null-safety de Kotlin de una forma que crashea lejos de la causa.
- Añadir @Serializable sin aplicar también el plugin de Gradle de kotlinx.serialization, lo que falla en compilación con un mensaje que no nombra obviamente el plugin ausente.
- Mantener Int para marcas de tiempo en milisegundos o IDs grandes, lo que desborda en silencio en lugar de lanzar un error.
Por qué usar esta herramienta
- Produce data classes idiomáticas, así que equals, hashCode, toString y copy vienen gratis en lugar de escribirse a mano.
- Da a cada objeto anidado su propia clase con nombre, que es justo lo que Retrofit, Moshi y kotlinx.serialization esperan.
- Se ejecuta íntegramente en el cliente, así que un payload copiado de un servicio Android o Ktor nunca abandona tu máquina para generar estas data classes.