If you like this article, considere buy me a cofee! 😉
Crypto donation button by NOWPayments

Vamos a ver cómo podemos codificar y decodificar información en formato JSON con keys propias, diferentes de las que nos llegan en el JSON desde un servidor. Para ello utilizaremos tipos Codable personalizados.

En una publicación anterior vimos como transformar datos en formato JSON, que habíamos obtenido de una fuente externa (como al realizar una petición a un servicio web), en estructuras (struct) o clases (class) mediante el protocolo Codable.

En dicha publicación, las propiedades de las estructuras o clases tenían el mismo nombre que las claves (keys) en el JSON. Es decir, si la key en el JSON era firstName, entonces la propiedad de la estructura asociada a ese valor también esta firstName:

Claves (keys) personalizadas

Sin embargo, ¿qué ocurre cuando las claves del JSON no coinciden con el nombre de las propiedades de nuestras estructuras o clases (por ejemplo, debido a convenciones de nomenclatura). Por ejemplo, supongamos que en la estructura de datos User utilizamos el parámetro firstName, pero desde el servidor nos llega un JSON con la key first_name.

En ese caso, podemos asignar nuestros propios valores mediante tipos Codable personalizados. Por ejemplo:

Ahora extendemos nuestra struct o class definiendo un el enum CodingKeys. En esta extensión asignaremos los valores de los tipos Codable personalizados a los casos que queremos hacer coincidir:

Ejemplo de Encoding

Para pasar de una instancia de una estructura a un JSON (si usamos el mismo tipo de estructura User y el mismo JSON):

De esta forma obtenemos en la consola lo siguiente:

Ejemplo de Decoding

Para el paso inverso, la decodificación de JSON a struct, tenemos:

Y en la consola obtenemos:

Categorías: CodableSwift

0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Sígueme en Feedly