Herramienta de Tool Kumar

JSON a data classes de Kotlin

Convierte un JSON de ejemplo en data classes para kotlinx.serialization. Los objetos anidados tienen sus propias clases, los arrays se convierten en valores List y los campos renombrados conservan sus nombres JSON mediante @SerialName.

Cómo usar esta herramienta

  1. Pega una respuesta representativa que incluya registros cuyos campos difieran.
  2. Revisa la salida generada y cambia el nombre raíz si es necesario.
  3. Copia o descarga el código y comprueba después los tipos con el contrato de tu API.

Ejemplo práctico

Esta salida procede del conversor integrado. Los dos precios permiten inferir un campo de coma flotante; los valores null y de cadena de note permiten inferir un campo que admite 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"
    }
  ]
}

Salida

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,
)

Decodificar una respuesta de API en Android

Activa el plugin de serialización del compilador de Kotlin y añade la dependencia JSON de kotlinx.serialization a tu aplicación. Usa el tipo Root generado con Json.decodeFromString.

ignoreUnknownKeys permite nuevos campos del servidor sin provocar un error. Actívalo solo cuando la política de tu API admita campos desconocidos.

import kotlinx.serialization.json.Json

val json = Json { ignoreUnknownKeys = true }
val model = json.decodeFromString<Root>(responseBody)

Opciones y casos especiales

  • El generador añade @Serializable a cada data class e importa las anotaciones de kotlinx.serialization. No genera @Json de Moshi ni @SerializedName de Gson.
  • Los enteros usan Long, las fracciones usan Double y los valores que solo son null o mezclan tipos usan JsonElement. Los campos que admiten null tienen null como valor predeterminado.
  • Los enteros fuera del rango de 64 bits con signo se convierten en Double, lo que puede perder precisión. Usa cadenas o un serializador personalizado para identificadores exactos.
  • Las cadenas de fecha siguen siendo String. Un solo ejemplo no permite saber si un campo es obligatorio en todas las respuestas de la API.

Privado por defecto

Tu documento permanece en este navegador. Tool Kumar analiza, convierte y crea las descargas en tu dispositivo, sin cuenta ni pasos para subir archivos.

Preguntas sobre JSON a data classes de Kotlin

¿Qué biblioteca de serialización de Kotlin utiliza?
kotlinx.serialization. La salida usa @Serializable y añade @SerialName cuando una propiedad de Kotlin difiere de su clave JSON.
¿Puedo usarlo con Moshi?
Los tipos de campo pueden servirte de base para un modelo, pero las anotaciones son para kotlinx.serialization. Sustitúyelas y configura la generación de código de Moshi si tu aplicación Android usa Moshi.
¿Cómo se tratan los campos ausentes y los valores null?
Los campos ausentes en algunos registros del array o que aparecen como null pasan a admitir null y tienen null como valor predeterminado. Los campos obligatorios que no admiten null no tienen valor predeterminado.
¿Crea DTO de Kotlin para Android?
Sí. Crea data classes adecuadas como DTO. Configura en tu proyecto el plugin de serialización del compilador de Kotlin y la biblioteca JSON de tiempo de ejecución.

Herramientas relacionadas

JSON a Java, JSON a Dart y Generador de JSON Schema.