Serialización de JSON a Modelos en Swift 5 con Codable

Clase 17 de 52Curso de Desarrollo de Apps para iOS

Resumen

¿Por qué usar modelos en lugar de diccionarios al consumir servicios en Swift?

Al desarrollar aplicaciones en Swift, existe una práctica común que es usar modelos en lugar de diccionarios para consumir servicios. Esto no solo mejora la legibilidad del código, sino que también ofrece una estructura más clara y profesional. En lugar de manejar diccionarios con valores ambiguos, transformarás tus datos JSON en objetos bien definidos que siguen el protocolo Codable. Este enfoque no solo es más organizado, sino que también es más seguro y eficiente.

¿Cómo crear un modelo 'Codable' en Swift?

Para comenzar, define una estructura que represente los datos que esperas recibir en formato JSON. En este caso, creamos la estructura Human, que incluye tres propiedades: user, age, e isHappy. Estas propiedades deben coincidir con los tipos de datos que esperas recibir. El protocolo Codable es indispensable ya que permite la serialización y deserialización de los datos JSON de manera automática.

struct Human: Codable {
    let user: String
    let age: Int
    let isHappy: Bool
}

¿Cómo deserializar datos JSON usando JSONDecoder?

Una vez que tienes tu modelo, el siguiente paso es utilizar el JSONDecoder para transformar los datos JSON que recibes en una instancia del modelo. Esto se hace de manera sencilla con el método decode, de la siguiente manera:

let model = try JSONDecoder().decode(Human.self, from: dataFromService)

En este ejemplo, dataFromService es la data JSON obtenida del servicio. La función decode requiere dos parámetros: el tipo del modelo al que deseas deserializar (en este caso, Human.self) y los datos crudos JSON.

¿Qué beneficios ofrece usar Codable y JSONDecoder?

  • Legibilidad: Al usar estructuras definidas como Human, el código se vuelve más fácil de leer y entender.
  • Seguridad: Los modelos Codable son más seguros ya que implican menos errores que los diccionarios debido a la tipificación fuerte de Swift.
  • Mantenimiento: Cambiar y expandir el modelo se hace más sencillo porque todo está encapsulado.
  • Eficiencia: El proceso de decodificación es más rápido y ahorra recursos al estar bien optimizado en Swift.

¿Qué ocurre si trabajo con una versión antigua de Swift?

El protocolo Codable está disponible desde Swift 4 en adelante. Si trabajas en un proyecto que utiliza una versión de Swift más antigua, deberás emplear otras herramientas de serialización. Sin embargo, si estás utilizando Swift 5, puedes aprovechar todas las ventajas que ofrece Codable, ya que llegó para quedarse y es ampliamente usado en la industria de desarrollo de aplicaciones.

Este enfoque te permite llevar la estructura a tus aplicaciones y hacer que el proceso de deserializar JSON sea fácil y eficiente. ¡Anímate a practicar creando tus propias estructuras Codable y refuerza tus habilidades en Swift!