Ferramenta Tool Kumar
JSON para Kotlin data class
Transforme um JSON de exemplo em data classes para kotlinx.serialization. Objetos aninhados ganham suas próprias classes, arrays viram valores List e campos renomeados mantêm os nomes usados no JSON por meio de @SerialName.
Como usar esta ferramenta
- Cole uma resposta representativa, incluindo registros cujos campos sejam diferentes.
- Revise a saída gerada e altere o nome raiz se necessário.
- Copie ou baixe o código e confira se os tipos correspondem ao contrato da sua API.
Exemplo prático
Esta saída vem do conversor integrado. Os dois preços de item permitem inferir um campo de ponto flutuante. Os valores null e string de note permitem inferir um campo que aceita null.
Entrada
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}Saída
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class Root(
@SerialName("user-id") val userId: Long,
val profile: Profile,
val items: List<Item>,
)
@Serializable
data class Profile(
val city: String,
@SerialName("created_at") val createdAt: String,
)
@Serializable
data class Item(
val price: Double,
val note: String? = null,
)
Decodifique uma resposta de API no Android
Ative o plugin de serialização do compilador Kotlin e adicione a dependência JSON de kotlinx.serialization ao seu app. Use o tipo Root gerado com Json.decodeFromString.
ignoreUnknownKeys permite novos campos do servidor sem causar falha. Ative essa opção somente quando a política da sua API permitir campos desconhecidos.
import kotlinx.serialization.json.Json
val json = Json { ignoreUnknownKeys = true }
val model = json.decodeFromString<Root>(responseBody)Opções e casos especiais
- O gerador adiciona @Serializable a cada data class e importa as anotações de kotlinx.serialization. Ele não gera @Json do Moshi nem @SerializedName do Gson.
- Inteiros usam Long, valores fracionários usam Double e valores observados apenas como null ou de tipos mistos usam JsonElement. Campos que aceitam null têm null como valor padrão.
- Inteiros fora do intervalo de 64 bits com sinal viram Double, o que pode causar perda de precisão. Use strings ou um serializador personalizado para identificadores exatos.
- Strings de data continuam sendo String. Um único exemplo não permite saber se um campo é obrigatório em todas as respostas da API.
Privado por padrão
Seu documento fica neste navegador. O Tool Kumar analisa, converte e cria downloads no seu dispositivo, sem conta e sem envio ao servidor.
JSON para Kotlin data class: perguntas frequentes
- Qual biblioteca de serialização Kotlin ele usa?
- kotlinx.serialization. A saída usa @Serializable e adiciona @SerialName quando uma propriedade Kotlin difere de sua chave JSON.
- Posso usá-lo com Moshi?
- Os tipos dos campos podem ajudar você a começar um modelo, mas as anotações são para kotlinx.serialization. Substitua-as e configure a geração de código do Moshi se seu app Android usar Moshi.
- Como os campos ausentes e null são tratados?
- Campos ausentes em alguns registros do array ou observados como null passam a aceitar null e têm null como valor padrão. Campos obrigatórios que não aceitam null não têm valor padrão.
- Ele cria DTOs Kotlin para Android?
- Sim. Ele cria data classes adequadas para uso como DTOs. Configure o plugin de serialização do compilador Kotlin e o runtime JSON no seu projeto.