Saltar al contenido

JSON a struct Codable en Swift

Convierte una muestra JSON en un struct de Swift que se conforme a Codable.

Entrada
Salida

JSON a struct Codable en Swift

Pega una muestra JSON y esta herramienta deduce su forma y genera un struct de Swift que se conforme a Codable, listo para insertar en un proyecto iOS, macOS o Swift del lado del servidor. Los objetos anidados se convierten en sus propios structs anidados, los arrays se convierten en arrays Swift tipados, y un valor que falta a veces o es nulo se convierte en una propiedad opcional con un signo de interrogación, de modo que el modelo generado coincida con lo que la API realmente envía, no solo una muestra afortunada.

Las opciones controlan la forma del código generado. Elige struct o class para la declaración, y let o var para la mutabilidad de propiedades. Al activar CodingKeys, convierte las claves JSON en snake_case como user_name en la convención camelCase de Swift y agrega el enum CodingKeys correspondiente, de modo que la decodificación se alinee con los nombres de campo originales; desactívalo para mantener las claves JSON textualmente. El nivel de acceso determina si el tipo y sus propiedades son public o internal. Los campos de fecha como Date reconocen cadenas ISO-8601 y las tipan como Date en lugar de String, y la indentación te permite hacer coincidir el estilo de tu proyecto con 2 espacios, 4 espacios o tabulaciones.

Un campo que mezcla tipos no relacionados en un array de muestra (un valor que a veces es un número y a veces una cadena) recurre a un pequeño envoltorio AnyCodable que solo se agrega al resultado cuando es realmente necesario, de modo que el struct se compila en lugar de adivinar silenciosamente mal. Las claves que no son identificadores Swift válidos, incluidos emoji o claves que comienzan con un dígito, se desinfectan y se asignan de nuevo a través de CodingKeys automáticamente para que nada se pierda.

Todo se ejecuta localmente en tu navegador a medida que escribes (sin que la muestra JSON se cargue o envíe a un servidor), lo que importa cuando la muestra proviene de una respuesta real de API. Copia el Swift generado, descárgalo como archivo .txt o envíalo de nuevo a la entrada para refinarlo aún más.

Preguntas frecuentes

¿Cómo se manejan los objetos JSON anidados?
Cada objeto anidado se convierte en su propio struct de Swift, nombrado después de la clave bajo la que apareció, y referenciado desde el struct padre por tipo.
¿Qué sucede con un campo que a veces es nulo o falta?
Se genera como una propiedad opcional con un signo de interrogación, de modo que la decodificación nunca falla con una respuesta real que la omite.
¿Qué hace exactamente la opción CodingKeys?
Cuando está activada, una clave JSON en snake_case como created_at se convierte en la propiedad createdAt, y un enum CodingKeys la asigna de nuevo para decodificación. Cuando está desactivada, el nombre de la propiedad coincide con la clave JSON lo más cercano posible según las reglas de identificadores de Swift.
¿Puede generar una clase en lugar de un struct?
Sí. La opción Declaración cambia cada tipo generado entre struct y class mientras mantiene la misma conformidad Codable.
¿Mi JSON se carga en algún lugar?
No. El struct se genera completamente en tu navegador (tu muestra JSON nunca deja tu dispositivo).