0Pricing
Swift Academy · Lección

Codable: codificación y decodificación de JSON

Adáptese a Codable, personalice CodingKeys y decodifique contenedores anidados.

Codable: codificación y decodificación de JSON es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Protocolo Codable

Codable es un alias de tipo para Encodable & Decodable. Los tipos conformes pueden codificarse y decodificarse automáticamente desde JSON.

struct User: Codable {
  var name: String
  var age: Int
}

Síntesis automática

Swift sintetiza las implementaciones de Codable cuando todas las propiedades almacenadas también son conformes a Codable.

struct Product: Codable {
  var id: Int
  var title: String
  var price: Double
  // init(from:) and encode(to:) are auto-generated
}

Decodificación de JSON

Use JSONDecoder para decodificar Data en su tipo Decodable.

let json = #"{"name":"Alice","age":30}"#.data(using: .utf8)!
let user = try JSONDecoder().decode(User.self, from: json)
print(user.name) // Alice

Codificación en JSON

Use JSONEncoder para codificar un valor Codable en Data.

let user = User(name: "Bob", age: 25)
let data = try JSONEncoder().encode(user)
print(String(data: data, encoding: .utf8)!)

CodingKeys personalizados

Use un enum CodingKeys para establecer la correspondencia entre los nombres de las propiedades de Swift y las claves JSON.

struct Article: Codable {
  var createdAt: Date
  enum CodingKeys: String, CodingKey {
    case createdAt = "created_at"
  }
}

Estrategias de decodificación de fechas

Configure JSONDecoder.dateDecodingStrategy para analizar fechas en diversos formatos.

let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
let article = try decoder.decode(Article.self, from: data)

Contenedores anidados

Decodifique objetos JSON anidados definiendo structs Codable anidados o usando contenedores con claves manualmente.

struct Response: Codable {
  struct Data: Codable {
    var users: [User]
  }
  var data: Data
}
let resp = try JSONDecoder().decode(Response.self, from: json)

Lógica de decodificación personalizada

Redefina init(from:) para estructuras JSON no estándar o para aplicar transformaciones durante la decodificación.

struct Rating: Codable {
  var stars: Int
  init(from decoder: Decoder) throws {
    let container = try decoder.singleValueContainer()
    let raw = try container.decode(Double.self)
    stars = Int(raw.rounded())
  }
  func encode(to encoder: Encoder) throws {
    var container = encoder.singleValueContainer()
    try container.encode(Double(stars))
  }
}

keyDecodingStrategy

Use .convertFromSnakeCase para convertir automáticamente las claves JSON en snake_case a propiedades de Swift en camelCase.

let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let user = try decoder.decode(User.self, from: data)
// "first_name" → firstName

Opciones de codificación

Configure JSONEncoder.outputFormatting para obtener una salida con formato legible o ordenada.

let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(product)

Gestión de campos Optional

Marque las propiedades como Optional para gestionar correctamente las claves JSON ausentes sin producir errores.

struct User: Codable {
  var name: String
  var bio: String?  // nil if "bio" key is absent from JSON
}

Comprobación rápida

¿Qué estrategia de JSONDecoder asigna automáticamente las claves JSON en snake_case a nombres de propiedades de Swift en camelCase?

Resumen de la lección

Adopte Codable para realizar automáticamente la codificación y decodificación JSON. Use CodingKeys para reasignar nombres de propiedades, keyDecodingStrategy = .convertFromSnakeCase con API que usan snake_case, init(from:) personalizado para JSON no estándar y dateDecodingStrategy para analizar fechas.

Preguntas frecuentes

¿La lección «Codable: codificación y decodificación de JSON» es gratis?

Sí — el texto completo de «Codable: codificación y decodificación de JSON» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Codable: codificación y decodificación de JSON»?

Adáptese a Codable, personalice CodingKeys y decodifique contenedores anidados. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Codable: codificación y decodificación de JSON»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. URLSession data(from:) con async/await
  2. Codable: codificación y decodificación de JSON
  3. Gestión de errores y códigos de estado HTTP
  4. Lógica de reintentos y URLSession en segundo plano
← Volver a Swift Academy