Acerca de JSON a Kotlin Online
Pega un objeto JSON y obtén definiciones de data class de Kotlin al instante.
Preguntas frecuentes
¿Qué es la generación de data classes de Kotlin desde JSON?
La generación de data classes de Kotlin desde JSON analiza una muestra de JSON y produce definiciones de data class con anotaciones @Serializable y @SerialName, compatibles con la biblioteca kotlinx.serialization y listas para usar con Json.decodeFromString().
¿Qué biblioteca de serialización debo usar: kotlinx.serialization, Gson o Moshi?
kotlinx.serialization es la opción oficial de Kotlin y la mejor para proyectos multiplataforma. Gson no admite correctamente los tipos nullables de Kotlin sin adaptadores. Moshi con kotlin-reflect o codegen es una alternativa sólida con soporte completo de null-safety. Para Android, kotlinx.serialization o Moshi son preferibles; para Spring Boot, Jackson con kotlin-module es lo estándar.
¿Cómo se representan los campos JSON nullables en un data class de Kotlin?
Los campos que son null en la muestra JSON se tipifican como nullables (String?, Int?, etc.) con un valor predeterminado de null. Esto permite a Kotlin gestionar los campos ausentes sin NullPointerException. Activa la opción "Hacer todo opcional" para marcar todos los campos como nullables, recomendado cuando tu API real puede devolver más nulls que la muestra.
¿Puedo usar el data class generado directamente con Retrofit?
Sí. Añade la fábrica de conversión de kotlinx.serialization o Moshi a tu Retrofit.Builder y anota tu data class con @Serializable (kotlinx) o déjalo sin anotar (Moshi con codegen). Retrofit deserializará automáticamente el cuerpo de la respuesta JSON en tu data class sin necesidad de código de análisis manual.
¿Cómo mapeo claves camelCase de JSON a propiedades snake_case de Kotlin?
Añade @SerialName("clave_snake_case") a cada propiedad, o configura una NamingStrategy a nivel de biblioteca. Con kotlinx.serialization, usa @SerialName por campo. Con Moshi, usa @Json(name = "clave_snake_case"). Con Gson, usa @SerializedName("clave_snake_case"). El generador produce propiedades en camelCase siguiendo las convenciones estándar de Kotlin.
Advertisement300 × 250
Advertisement300 × 250