Convertir JSON a Swift Struct
Genera structs Codable de Swift desde JSON, gratis, en tu navegador.
Para qué sirve
De JSON a Swift Struct Codable
Listo para iOS y SwiftUI
Genera structs compatibles con URLSession, Alamofire, SwiftUI y Combine. Pega directamente en Xcode.
100% privado
Tu JSON de API nunca sale de tu navegador. Sin registro, sin telemetría.
Codable correcto
CodingKeys automático para snake_case, Optional para nullables, tipos correctos (Int, Double, Bool). Código idiomático.
Instantáneo
Structs generados en tiempo real mientras escribes. Sin botones, sin esperas.
Cómo funciona
Tres pasos, sin complicaciones
Pega tu JSON
Pega el JSON de tu API o respuesta web. Funciona con objetos anidados, arrays y cualquier estructura JSON válida.
Generación instantánea
La herramienta genera structs de Swift que conforman el protocolo Codable automáticamente, con CodingKeys cuando es necesario.
Copia el código
Copia los structs generados y úsalos directamente en tu proyecto iOS, macOS o SwiftUI.
Preguntas frecuentes
¿Tienes dudas?
Codable es un alias de tipo introducido en Swift 4 (WWDC 2017) que combina dos protocolos: Encodable (puede convertirse a un formato externo como JSON) y Decodable (puede crearse desde un formato externo). Un tipo que conforma Codable puede tanto serializar como deserializar datos. La conformancia se obtiene automáticamente mediante síntesis del compilador si todas las propiedades también conforman Codable.
Para modelos de datos JSON se prefieren structs por varias razones: los structs son value types (se copian en lugar de referenciar), lo que evita problemas de estado compartido; el compilador puede optimizarlos mejor; y en SwiftUI, los structs funcionan mejor con el modelo de datos reactivo. Las clases (reference types) tienen su lugar cuando necesitas herencia o identidad de objeto, pero para modelos de API los structs son la práctica recomendada.
CodingKeys es un enum anidado que mapea los nombres de propiedades de Swift a los nombres de claves en el JSON. Es necesario cuando los nombres del JSON (típicamente snake_case en APIs REST) difieren de las convenciones de Swift (camelCase). Por ejemplo, si el JSON tiene first_name, el CodingKey mapea esa clave al campo firstName del struct. Sin CodingKeys, Swift espera que los nombres del JSON coincidan exactamente con los nombres de las propiedades.
En Swift, un tipo Optional (marcado con ?) puede tener un valor o ser nil. Cuando un campo JSON puede estar ausente o ser null, la propiedad en el struct se declara como Optional: var email: String? en lugar de var email: String. JSONDecoder de Foundation maneja automáticamente la deserialización: si la clave no existe en el JSON o su valor es null, la propiedad queda como nil sin lanzar un error.
El flujo típico con URLSession y Codable es: URLSession.shared.dataTask devuelve Data; JSONDecoder().decode(MiStruct.self, from: data) convierte el Data al struct; el resultado se usa en la UI en el main thread. Con Swift 5.5+ y async/await, se usa let data = try await URLSession.shared.data(for: request) seguido de let objeto = try JSONDecoder().decode(MiStruct.self, from: data). Este patrón es la base de toda integración de APIs en iOS moderno.
Swift para iOS/macOS, el protocolo Codable (2017) e integración de APIs con SwiftUI
Swift fue presentado por Apple en la WWDC 2014 como el sucesor de Objective-C para el desarrollo de apps en iOS, macOS, watchOS y tvOS. Con la introducción de Codable en Swift 4 (WWDC 2017), el trabajo con JSON se simplificó radicalmente. Antes de Codable, los desarrolladores usaban librerías de terceros como SwiftyJSON o Codable frameworks de Alamofire. Con Codable nativo, solo necesitas JSONDecoder y structs bien tipados, sin dependencias externas.
SwiftUI, introducido en la WWDC 2019, reforzó el uso de structs como modelos de datos. La arquitectura de SwiftUI basada en value types y el protocolo View como struct encaja perfectamente con los modelos Codable. Patrones como MVVM (Model-View-ViewModel) en SwiftUI usan @Published en ViewModels ObservableObject con structs Codable como modelos, creando un flujo de datos predecible y testeable.
Con Swift 5.5 (WWDC 2021) y la introducción de async/await, el consumo de APIs REST se volvió aún más limpio. URLSession.shared.data(for:) ahora es una función async que elimina los completion handlers anidados (callback hell). Combinado con JSONDecoder, el patrón completo de fetch + decode es apenas 3 líneas de código. Esta herramienta genera los structs Codable necesarios para ese patrón, procesando todo en tu navegador sin enviar tus datos a ningún servidor.