Codable Swift: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Codable Swift: guía completa con ejemplos prácticos

1. ¿Qué es y para qué sirve?

Codable es un protocolo integrado (typealias de Encodable & Decodable) en el lenguaje Swift, presentado en Swift 4. Proporciona una forma declarativa de serializar y deserializar tipos de datos personalizados en formatos como JSON, Property List (plist) y otros. En lugar de escribir manualmente código tedioso para convertir estructuras en diccionarios y viceversa, Codable permite generar automáticamente la lógica de codificación/decodificación basándose en las propiedades de tu modelo.

¿Para qué sirve? En el desarrollo moderno para iOS/macOS, prácticamente todas las aplicaciones interactúan con APIs de servidores, recibiendo y enviando datos en formato JSON. Sin Codable, el desarrollador tendría que escribir manualmente bucles, verificar tipos, manejar valores opcionales y crear un parser inverso. Codable resuelve este problema, haciendo el código más limpio, seguro y reduciendo significativamente el tiempo de desarrollo. Además, es el estándar de facto para trabajar con JSON en el ecosistema Apple.

Codable funciona basándose en los protocolos Encodable (para convertir de un tipo Swift a datos) y Decodable (para convertir de datos a un tipo Swift). Combinándolos, obtienes el ciclo completo de serialización. La biblioteca está estrechamente integrada con JSONEncoder y JSONDecoder, que son las herramientas principales para trabajar con JSON.

2. Instalación

Codable es parte de la biblioteca estándar de Swift (Foundation). No requiere ninguna instalación adicional. No necesitas usar pip, npm, CocoaPods ni Swift Package Manager para utilizarlo. Simplemente importa Foundation en tu archivo:

import Foundation

Si usas Swift en un entorno Linux (por ejemplo, a través de Swift Package Manager), Codable también está disponible de serie. Para frameworks de servidor como Vapor, Codable se usa por defecto.

3. Inicio rápido — ejemplo mínimo funcional

Vamos a crear una estructura simple de usuario y serializarla/deserializarla a JSON.

import Foundation

// 1. Definimos el modelo que cumple con el protocolo Codable
struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

// 2. Creamos una instancia
let user = User(id: 1, name: "Alice", email: "alice@example.com")

// 3. Codificamos a JSON
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted // Para una salida más legible

do {
    let jsonData = try encoder.encode(user)
    if let jsonString = String(data: jsonData, encoding: .utf8) {
        print("JSON: \n\(jsonString)")
    }

    // 4. Decodificamos de vuelta
    let decoder = JSONDecoder()
    let decodedUser = try decoder.decode(User.self, from: jsonData)
    print("Usuario decodificado: \(decodedUser.name), email: \(decodedUser.email)")
} catch {
    print("Error: \(error)")
}

Salida en consola:

JSON:
{
  "id" : 1,
  "name" : "Alice",
  "email" : "alice@example.com"
}
Usuario decodificado: Alice, email: alice@example.com

Como puedes ver, con solo unas pocas líneas de código, la serialización está lista.

4. Métodos/funciones/clases principales

Veamos los componentes clave de Codable que usarás constantemente.

Recommendations