JSON to Kotlin
Gere data classes Kotlin a partir de uma amostra JSON, para kotlinx.serialization, Moshi ou Gson.
Entrada JSON
Código gerado
Digite JSON à esquerda para gerar um tipo a partir dele.
O que é JSON to Kotlin?
Um conversor de JSON para Kotlin transforma uma amostra de payload JSON em data classes Kotlin correspondentes à sua estrutura. A data class é a forma canônica de Kotlin de modelar uma resposta JSON: declarar as propriedades no construtor basta para o compilador gerar equals, hashCode, toString, copy e desestruturação, então um modelo que seria um POJO longo em Java vira um punhado de linhas. Este é o formato que toda biblioteca JSON de Kotlin espera — kotlinx.serialization, Moshi e Gson vinculam-se a data classes — o que torna gerá-las a partir de um payload real a rota mais rápida de uma resposta de API para Kotlin tipado e null-safe. Também elimina o frequente bug de integração em Android em que um nome de propriedade difere da chave JSON por um caractere e desserializa silenciosamente como null.
Como usar JSON to Kotlin
- Cole uma resposta JSON representativa no painel esquerdo — as propriedades geradas correspondem exatamente às chaves daquela amostra.
- Defina um nome de classe raiz acima da saída (o padrão é "Root"); cada objeto aninhado se torna sua própria data class, nomeada pela chave que o contém.
- Copie as classes para o seu projeto e adicione o que sua biblioteca JSON exigir — @Serializable para kotlinx.serialization, ou nada para Moshi e Gson com reflection.
- Alterne o seletor de linguagem acima da saída para emitir a mesma forma como um record Java, struct Go ou interface TypeScript em outra linguagem suportada.
Exemplos
Objeto plano como data class
Entrada
{"id": 1, "name": "Ada", "active": true}
Saída
data class Root( val id: Int, val name: String, val active: Boolean, )
Objeto aninhado e uma lista
Entrada
{"user": {"id": 1, "name": "Ada", "roles": ["admin"]}}
Saída
data class User( val id: Int, val name: String, val roles: List<String>, ) data class Root( val user: User, )
Erros comuns
- Deixar propriedades não anuláveis quando a API as omite — kotlinx.serialization lança MissingFieldException, e Gson pode silenciosamente colocar null numa propriedade não nula, quebrando a garantia de null-safety de Kotlin de um jeito que quebra longe da causa.
- Adicionar @Serializable sem aplicar também o plugin do Gradle do kotlinx.serialization, o que falha em tempo de compilação com uma mensagem que não obviamente menciona o plugin faltando.
- Manter Int para timestamps em milissegundos ou IDs grandes, o que sofre overflow silencioso em vez de levantar um erro.
Por que usar esta ferramenta
- Produz data classes idiomáticas, então equals, hashCode, toString e copy vêm de graça em vez de escritos à mão.
- Dá a cada objeto aninhado sua própria classe nomeada, que é o que Retrofit, Moshi e kotlinx.serialization esperam.
- Roda inteiramente no cliente, então um payload copiado de um serviço Android ou Ktor nunca sai da sua máquina para gerar essas data classes.