Skip to content
jsonforge.app

JSON to Kotlin

Gere data classes Kotlin a partir de uma amostra JSON, para kotlinx.serialization, Moshi ou Gson.

Entrada JSON

Loading editor…

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

  1. Cole uma resposta JSON representativa no painel esquerdo — as propriedades geradas correspondem exatamente às chaves daquela amostra.
  2. 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.
  3. 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.
  4. 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.

Perguntas frequentes