Cola o Kotlin à esquerda e clica em "Converter" — transformamos em JSONCola o código Kotlin

O que esta ferramenta faz

Se já tiveste de escrever à mão um payload JSON espelhando uma data class de Kotlin — para um teste unitário, uma fixture ou uma chamada de API — sabes o trabalho chato que isso dá. Normalmente puxas por kotlinx.serialization, anotas a classe e corres a app para capturar a saída. Cola o Kotlin aqui e recebe JSON válido sem nada disso — sem plugin Gradle, sem @Serializable, sem runtime.

O conversor respeita como os valores de Kotlin realmente serializam. val price: Double = 49.99 vira um número JSON, val tags: List<String> vira um array JSON, e val address: Address? com null vira null no JSON. Instant, LocalDate e LocalDateTime de kotlin.stdlib saem como strings ISO-8601. UUID vira hex padrão. Map<String, V> vira objeto JSON, e valores de enum class saem com o nome em string — o mesmo comportamento que tens com Gson ou jackson-module-kotlin.

As anotações de serialização são respeitadas. @SerialName("x") renomeia a chave JSON, @Transient remove a propriedade. Valores default dos parâmetros são emitidos quando a propriedade não está explicitamente definida. Cola várias data class de uma vez e cada uma sai como entrada de topo, com tipos aninhados expandidos e hierarquias sealed achatadas nas suas variantes. Se estás a entregar uma app Android, a saída entra direto em fixtures do Retrofit e seeds de testes do Room.

Como usar

Três passos. Funciona igual quer coles uma instância solta quer um ficheiro inteiro cheio de data classes.

1

Cola o teu Kotlin (ou carrega o exemplo)

Deita o teu Kotlin no editor da esquerda tal como está. Uma data class, uma classe normal, uma declaração de object, várias classes ou hierarquias sealed — tudo passa. Clica em Carregar exemplo para ver primeiro um caso realista.

Não precisas de remover imports, pacotes ou anotações. Deixa a sintaxe Kotlin como está — companion objects e backing fields também passam.

2

Carrega em Converter

Clica no botão verde Converter. A ferramenta lê o Kotlin, preserva todas as data classes e propriedades, e emite o JSON numa passagem. Durante a execução aparece um indicador de carregamento curto.

3

Copia o JSON

O painel da direita enche-se de JSON indentado. Cola no teu teste Retrofit, numa fixture Room, nos teus exemplos OpenAPI ou num cliente REST. E pronto, é o ciclo todo.

Quando isto salva o dia

Fixtures de API em apps Android

Tens um modelo de request do Retrofit e precisas de um payload JSON para atirar no MockWebServer ou Postman. Cola a data class, tira o JSON, e segue.

Dados de teste do backend

Um serviço Ktor ou Spring com 30 data classes. Converte cada uma em ficheiros JSON de seed para testes de integração sem escrever uma única anotação <code>@Serializable</code>.

Documentação que não desatualiza

Gera exemplos JSON para a tua spec OpenAPI ou referência de API diretamente das data classes reais, para a documentação nunca divergir dos modelos.

Esqueletos de ficheiros de configuração

Uma data class Settings com duas dúzias de propriedades vira um template JSON pronto a editar — zero boilerplate escrito à mão.

Perguntas comuns

Preciso de kotlinx.serialization ou Jackson instalados?

Não. Esta ferramenta corre no servidor e não compila o teu código — recebes o JSON sem qualquer plugin. Se queres serialização em runtime dentro da tua app, a escolha nativa é kotlinx.serialization; jackson-module-kotlin também funciona.

Respeita @SerialName, @Transient e @JsonProperty?

Sim. @SerialName("x") e @JsonProperty("x") renomeiam a chave JSON, e @Transient / @JsonIgnore retiram a propriedade da saída — a condizer com a semântica de kotlinx.serialization.

E Instant, LocalDate e UUID?

Instant, LocalDate, LocalDateTime e ZonedDateTime saem todos como strings ISO-8601. UUID vira uma string hex padrão 8-4-4-4-12. Duration vira uma string de duração.

Como são tratados nullables, sealed classes e enums?

Propriedades nullable com valor null viram null no JSON; caso contrário, o tipo interno é serializado normalmente. Instâncias de sealed class incluem um type discriminator por padrão (configurável se usares kotlinx.serialization). Enums saem com o nome em string a menos que anotados de outra forma.

O meu código fica guardado?

O código é enviado ao backend para a conversão e não é persistido — não registamos o payload. Como sempre, revê código sensível rapidamente antes de colar.

Funciona para Kotlin/JVM e Kotlin Multiplatform?

Sim. Desde que a sintaxe seja Kotlin válido, o conversor não se importa se o alvo é JVM, JS, Native ou Multiplatform. Tipos específicos de plataforma sem representação JSON (como Job ou Flow) saem como null.

Outras ferramentas que te podem dar jeito

Kotlin para JSON é uma peça do puzzle. Estas combinam bem: