Convertitore Kotlin → JSON
Incolla data class od oggetti Kotlin. Ti ridiamo JSON pulito.
Cosa fa questo strumento
Se ti è mai toccato scrivere a mano un payload JSON che rispecchi una data class di Kotlin — per un unit test, una fixture o una chiamata API — sai quanto è una rottura. Normalmente tiri dentro kotlinx.serialization, annoti la classe e fai girare l'app per catturare l'output. Incolla il Kotlin qui e ottieni JSON valido senza nulla di tutto ciò — niente plugin Gradle, niente @Serializable, niente runtime.
Il convertitore rispetta come serializzano davvero i valori di Kotlin. val price: Double = 49.99 diventa un numero JSON, val tags: List<String> diventa un array JSON, e val address: Address? con null diventa null in JSON. Instant, LocalDate e LocalDateTime da kotlin.stdlib escono come stringhe ISO-8601. UUID diventa una stringa hex standard. Map<String, V> diventa un oggetto JSON, e i valori di enum class escono con il loro nome come stringa — lo stesso comportamento che avresti con Gson o jackson-module-kotlin.
Le annotazioni di serializzazione vengono rispettate. @SerialName("x") rinomina la chiave JSON, @Transient toglie la property. I valori di default dei parametri vengono emessi quando la property non è impostata esplicitamente. Incolla più data class in una volta e ciascuna esce come voce di primo livello, con i tipi annidati espansi e le gerarchie di sealed class appiattite nelle loro varianti. Se stai spedendo un'app Android, l'output entra dritto in fixture Retrofit e seed di test Room.
Come si usa
Tre passi. Funziona uguale sia che incolli una singola istanza sia un file intero pieno di data class.
Incolla il tuo Kotlin (o carica l'esempio)
Butta il tuo Kotlin nell'editor di sinistra così com'è. Una data class, una classe normale, una dichiarazione object, più classi o gerarchie sealed — va bene tutto. Clicca Carica esempio per vedere prima un caso realistico.
Non devi togliere import, package o annotazioni. Lascia la sintassi Kotlin com'è — anche companion object e backing field vanno bene.
Premi Converti
Clicca il bottone verde Converti. Lo strumento legge il Kotlin, conserva ogni data class e property, ed emette il JSON in un passaggio solo. Intanto gira un breve indicatore di caricamento.
Copia il JSON
Il pannello di destra si riempie di JSON indentato. Copialo nel tuo test Retrofit, in una fixture Room, nei tuoi esempi OpenAPI o in un client REST. Fine del giro.
Quando ti salva davvero
Fixture API per app Android
Hai un modello di request Retrofit e ti serve un payload JSON da buttare in MockWebServer o Postman. Incolla la data class, prendi il JSON, vai avanti.
Dati di test per il backend
Un servizio Ktor o Spring con 30 data class. Converti ognuna in file JSON di seed per i test di integrazione senza scrivere nemmeno un'annotazione <code>@Serializable</code>.
Documentazione che resta allineata
Genera esempi JSON per la tua spec OpenAPI o l'API reference direttamente dalle data class reali, così la doc non divarica mai dai modelli.
Scheletri di file di configurazione
Una data class Settings con due dozzine di property diventa un template JSON pronto da editare — zero boilerplate scritto a mano.
Domande frequenti
Mi servono kotlinx.serialization o Jackson installati?
No. Questo strumento gira lato server e non compila il tuo codice — ottieni il JSON senza alcun plugin. Se vuoi serializzazione a runtime dentro l'app, la scelta nativa è kotlinx.serialization; jackson-module-kotlin funziona altrettanto.
Rispetta @SerialName, @Transient e @JsonProperty?
Sì. @SerialName("x") e @JsonProperty("x") rinominano la chiave JSON, e @Transient / @JsonIgnore tolgono la property dall'output — in linea con la semantica di kotlinx.serialization.
E Instant, LocalDate e UUID?
Instant, LocalDate, LocalDateTime e ZonedDateTime escono tutti come stringhe ISO-8601. UUID diventa una stringa hex standard 8-4-4-4-12. Duration diventa una stringa di durata.
Come vengono gestiti nullable, sealed class ed enum?
Le property nullable con valore null diventano null in JSON; altrimenti il tipo interno serializza normalmente. Le istanze di sealed class includono per default un type discriminator (configurabile se usi kotlinx.serialization). Gli enum escono con il loro nome come stringa salvo annotazione diversa.
Il mio codice viene salvato?
Il codice va al backend per la conversione e non viene persistito — non logghiamo il payload. Come sempre, dai un'occhiata veloce al codice sensibile prima di incollarlo.
Funziona sia con Kotlin/JVM sia con Kotlin Multiplatform?
Sì. Finché la sintassi è Kotlin valido, al convertitore non importa se il target è JVM, JS, Native o Multiplatform. I tipi platform-specific che non hanno rappresentazione JSON (come Job o Flow) escono come null.
Altri strumenti che possono servirti
Kotlin in JSON è solo un pezzo del puzzle. Questi si abbinano bene: