Convertidor de Kotlin a JSON
Pega data classes u objetos de Kotlin. Recibe JSON limpio.
Qué hace esta herramienta
Si alguna vez has tenido que escribir a mano un payload JSON que replique una data class de Kotlin — para un test unitario, un fixture o una llamada a una API — ya sabes el rollo que supone. Lo normal es tirar de kotlinx.serialization, anotar la clase y arrancar la app para capturar la salida. Pega aquí el Kotlin y obtén JSON válido sin nada de eso — sin plugin de Gradle, sin @Serializable, sin runtime.
El convertidor respeta cómo serializan de verdad los valores de Kotlin. val price: Double = 49.99 se convierte en un número JSON, val tags: List<String> en un array JSON, y val address: Address? con null queda como null en JSON. Instant, LocalDate y LocalDateTime de kotlin.stdlib salen como cadenas ISO-8601. UUID se vuelca como hex estándar. Map<String, V> se transforma en objeto JSON, y los valores de enum class salen con su nombre como string — el mismo comportamiento que te dan Gson o jackson-module-kotlin.
Las anotaciones de serialización se respetan. @SerialName("x") renombra la clave JSON y @Transient quita la propiedad. Los valores por defecto de los parámetros se emiten cuando la propiedad no está asignada explícitamente. Pega varias data class a la vez y cada una sale como entrada de primer nivel, con los tipos anidados expandidos y las jerarquías de sealed class aplanadas en sus variantes. Si envías una app Android, la salida entra directa en fixtures de Retrofit y seeds de tests de Room.
Cómo usarlo
Tres pasos. Da igual si pegas una instancia suelta o un archivo entero lleno de data classes.
Pega tu Kotlin (o carga el ejemplo)
Suelta tu Kotlin en el editor de la izquierda tal cual. Una data class, una clase normal, una declaración de object, varias clases o jerarquías sealed — todo vale. Pulsa Cargar ejemplo para ver un caso realista antes.
No hace falta que quites los import, packages ni anotaciones. Deja la sintaxis de Kotlin tal cual — companion objects y backing fields también entran.
Pulsa Convertir
Haz clic en el botón verde Convertir. La herramienta lee el Kotlin, conserva cada data class y propiedad, y saca el JSON de una pasada. Mientras trabaja aparece un indicador de carga breve.
Copia el JSON
El panel derecho se llena con JSON indentado. Cópialo a tu test de Retrofit, a un fixture de Room, a tus ejemplos de OpenAPI o a un cliente REST. Y listo.
Cuándo te saca las castañas del fuego
Fixtures de API en apps Android
Tienes un modelo de petición de Retrofit y necesitas un payload JSON para soltar en MockWebServer o Postman. Pega la data class, copia el JSON y a otra cosa.
Datos de prueba para backend
Un servicio Ktor o Spring con 30 data classes. Convierte cada una en ficheros JSON de seed para tests de integración sin escribir ni una sola anotación <code>@Serializable</code>.
Docs que no se desactualizan
Genera ejemplos JSON para tu spec de OpenAPI o referencia de API directamente desde las data classes reales, así la documentación nunca se desincroniza del modelo.
Plantillas de archivos de configuración
Una data class Settings con dos docenas de propiedades se convierte en una plantilla JSON lista para editar — sin boilerplate escrito a mano.
Preguntas habituales
¿Necesito kotlinx.serialization o Jackson instalados?
No. Esta herramienta corre en el servidor y no compila tu código — sacas el JSON sin ningún plugin. Si quieres serialización en runtime dentro de tu app, kotlinx.serialization es la opción nativa; jackson-module-kotlin también sirve.
¿Respeta @SerialName, @Transient y @JsonProperty?
Sí. @SerialName("x") y @JsonProperty("x") renombran la clave JSON, y @Transient / @JsonIgnore quitan la propiedad de la salida — igual que la semántica de kotlinx.serialization.
¿Qué pasa con Instant, LocalDate y UUID?
Instant, LocalDate, LocalDateTime y ZonedDateTime salen como cadenas ISO-8601. UUID se vuelca como hex estándar 8-4-4-4-12. Duration sale como cadena de duración.
¿Cómo trata nullables, sealed classes y enums?
Las propiedades nullable con valor null pasan a null en JSON; si no, el tipo interno serializa normalmente. Las instancias de sealed class incluyen un discriminador de tipo por defecto (configurable si usas kotlinx.serialization). Los enums salen con su nombre como string salvo que estén anotados de otra forma.
¿Se guarda mi código?
Tu código se envía al backend para la conversión y no se persiste — no logueamos el payload. Como siempre, revisa el código sensible antes de pegarlo.
¿Funciona tanto con Kotlin/JVM como con Kotlin Multiplatform?
Sí. Mientras la sintaxis sea Kotlin válido, al convertidor le da igual que el target sea JVM, JS, Native o Multiplatform. Los tipos específicos de plataforma sin representación JSON (como Job o Flow) salen como null.
Otras herramientas que te pueden venir bien
Kotlin a JSON es una pieza más. Estas combinan bien: