JSON to Swift Codable
Genera structs Codable de Swift con CodingKeys a partir de un JSON
Acerca de JSON to Swift Codable
Crea structs Codable con propiedades let en camelCase y un enum CodingKeys solo cuando el nombre de una propiedad difiere de su clave JSON. Los enteros se mapean a Int, los decimales a Double, los null y las claves que faltan en algunos elementos de un array a opcionales, y los valores mixtos o vacíos usan un enum JSONValue incluido en el resultado. Listo para JSONDecoder en apps de iOS y macOS; las claves presentes en la muestra quedan como obligatorias, y la generación ocurre en tu navegador.
Categoría: Conversores.
Preguntas frecuentes
¿Cuándo incluye el resultado un enum CodingKeys?
▾
Solo cuando el nombre de al menos una propiedad difiere de su clave JSON, por ejemplo user_name que pasa a userName o my-key que pasa a myKey. Cuando el enum existe incluye todas las propiedades, porque Swift solo codifica y decodifica las claves que contiene.
¿Qué es el enum JSONValue del resultado?
▾
Swift no tiene un tipo Codable integrado para JSON arbitrario, así que se agrega un enum JSONValue cuando un valor es solo null, de tipos mixtos, un array vacío o un objeto vacío. Decodifica strings, números, booleanos, arrays, objetos y null, y puedes reemplazarlo por un tipo concreto cuando conozcas la estructura.
¿Cómo decodifico JSON con los structs generados?
▾
Usa let root = try JSONDecoder().decode(Root.self, from: data), o decodifica RootList.self cuando el JSON es un array en el nivel superior. Deja keyDecodingStrategy con su valor por defecto, porque .convertFromSnakeCase reescribe las claves antes de compararlas con los CodingKeys generados.
¿Por qué algunos nombres de propiedad llevan backticks?
▾
Los nombres que son palabras reservadas de Swift, como default, class o self, se escriben entre backticks para que compilen como propiedades y sigan coincidiendo con sus claves JSON. Puedes renombrarlos, siempre que el case correspondiente de CodingKeys conserve la clave original como valor raw.