Herramienta de Tool Kumar
JSON a modelos Swift
Genera structs de Swift que cumplen el protocolo Codable. El conversor añade CodingKeys cuando los nombres de las propiedades difieren del JSON, de modo que una clave como user-id se decodifica como userId.
Cómo usar esta herramienta
- Pega una respuesta representativa que incluya registros cuyos campos difieran.
- Revisa la salida generada y cambia el nombre raíz si es necesario.
- 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 Foundation
struct Root: Codable {
let userId: Int
let profile: Profile
let items: [Item]
enum CodingKeys: String, CodingKey {
case userId = "user-id"
case profile, items
}
}
struct Profile: Codable {
let city: String
let createdAt: String
enum CodingKeys: String, CodingKey {
case city
case createdAt = "created_at"
}
}
struct Item: Codable {
let price: Double
let note: String?
}
Decodificar con JSONDecoder
Usa JSONDecoder con el struct Root generado. Codable también permite codificar el mismo modelo con JSONEncoder.
Mantén la estrategia de claves predeterminada para esta salida. Sus CodingKeys ya contienen los nombres del JSON, incluido created_at.
let model = try JSONDecoder().decode(Root.self, from: responseData)
let encoded = try JSONEncoder().encode(model)Opciones y casos especiales
- Los enteros se infieren como Int, los valores fraccionarios como Double y los enteros fuera del rango de 64 bits con signo como Decimal. Comprueba los límites de la plataforma de destino y la precisión decimal.
- Los valores null o los campos ausentes se convierten en propiedades opcionales. Una estructura con solo null o con tipos mezclados usa el tipo auxiliar JSONValue generado cuando es necesario.
- JSONValue almacena los números como Double, así que usa tipos explícitos para importes monetarios exactos o identificadores muy grandes.
- Las cadenas de fecha siguen siendo String. Si cambias un campo a Date, configura JSONDecoder.dateDecodingStrategy según el formato 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 modelos Swift
- ¿Genera clases o structs?
- Structs que cumplen el protocolo Codable, con propiedades let y tipos de modelo anidados. Importa Foundation.
- ¿Cuándo añade CodingKeys?
- Cuando cambia el nombre de una propiedad, genera una enumeración CodingKeys que mapea los identificadores de Swift con las claves JSON originales.
- ¿Cómo trata null?
- Los valores null observados y los campos ausentes producen propiedades opcionales. Los valores desconocidos o de tipos mezclados usan una enumeración JSONValue que cumple el protocolo Codable y se añade solo cuando se utiliza.
- ¿Puedo usar JSONDecoder directamente?
- Sí. Copia los structs generados en tu proyecto y decodifica Root.self desde Data. Revisa primero los campos opcionales y los tipos de fecha.
Herramientas relacionadas
JSON a Dart, JSON a data classes de Kotlin y Generador de JSON Schema.