Cómo se usa
- Pega un ejemplo de JSON con datos realistas; varios elementos por array ayudan a encontrar claves opcionales.
- Elige propiedades let (inmutables) o var.
- Copia el código a un archivo .swift y decodifica con
try JSONDecoder().decode(Root.self, from: data).
Cómo funciona
El ejemplo se convierte en una «forma»: cada clave con todos los tipos que aparecen en ella. Todos los objetos de un array forman un struct, así que una clave que solo está en algunos pasa a ser opcional. Codable decodifica una clave opcional ausente como nil.
- Las propiedades van en camelCase: order_id → orderId; una palabra reservada de Swift, como default, se escribe entre comillas invertidas.
- Los nombres de struct salen de las claves: items contiene [Item], customer pasa a Customer.
- Un array de nivel superior da un typealias, por ejemplo typealias Root = [RootItem].
Ejemplo
{"line_items":[{"sku":"A","note":null,"qty":1},{"sku":"B","note":"x"}]} con var da:
import Foundation
struct Root: Codable {
var lineItems: [LineItem]
enum CodingKeys: String, CodingKey {
case lineItems = "line_items"
}
}
struct LineItem: Codable {
var sku: String
var note: String?
var qty: Int?
}
Consejos
- Las fechas llegan como cadenas: cambia el tipo a Date y configura decoder.dateDecodingStrategy (por ejemplo .iso8601) si quieres interpretarlas.
- Añade tú la conformidad con Identifiable o Hashable donde SwiftUI la necesite.
- Para modelos Kotlin o TypeScript del mismo JSON, usa los generadores vecinos.