Generación de tipos

JSON a SwiftModelos desde respuestas reales

Compara dos registros para entender qué propiedades pasan a ser opcionales.

JSON a Swift

Entrada JSON

El análisis y la generación se realizan en este navegador. La entrada no se sube ni se almacena.

Código generado

Opciones de generación

Int64 / Decimal; probado con Swift 6.3.1, macOS 26. Usa makeJSONDecoder() y verifica el sistema de destino.

El array raíz define el elemento Root; decodifica [Root].self.

2 structs · 2 propiedades opcionales

JSON a Swift ayuda a preparar modelos a partir de ejemplos de una API. Incluye respuestas donde falten claves: un solo objeto completo no permite descubrir todos los campos que podrían omitirse.

Este generador Swift Codable crea un borrador de struct Swift con CodingKeys. Los campos opcionales describen lo observado; las reglas obligatorias y futuras variantes pertenecen al contrato de tu aplicación.

¿Por qué usar JSON a Swift?

Revisar todos los registros

JSON a Swift combina objetos en la misma posición de un array. Las claves ausentes y null producen propiedades opcionales; los valores siempre presentes mantienen un tipo concreto.

Dos tarjetas de objetos se unen en un modelo con una casilla hueca para una propiedad opcional.

Elegir cómo leer las fechas

Los sellos de tiempo siguen siendo cadenas por defecto. La inferencia ISO conecta solo fechas completas válidas con Date y un decodificador adecuado; las demás cadenas conservan su tipo.

Una tarjeta de tiempo se bifurca entre una cadena conservada y un reloj mediante una ruta seleccionada.

Define el contrato de lectura

01

Incluye ejemplos distintos

La raíz admite un objeto o un array no vacío de objetos. Si es un array, se genera el modelo del elemento Root: decodifica [Root].self. Los arrays anidados también combinan todos sus elementos.

02

Comprueba nombres y horas

Conserva CodingKeys para claves snake_case o especiales. Elige camelCase o preservar identificadores válidos. La inferencia ISO exige zona horaria y un máximo de tres cifras de fracción de segundo.

03

Confirma antes de reemplazar

La generación automática espera 350 ms. Desactívala para usar el botón o Ctrl/Cmd+Enter. Cada cambio bloquea exportaciones antiguas. Ejemplo y Borrar muestran primero el número de caracteres y guardan una acción de deshacer al aplicar.

Qué incluye el código

Modelos en un solo archivo

JSON a Swift produce propiedades var y estructuras Codable. Los objetos hijos no vacíos tienen modelos auxiliares, los vacíos son diccionarios y los valores mezclados usan un enum JSONValue recursivo, sin depender de Any.

Números desde el token original

Los grupos con escritura entera dentro del rango de 64 bits con signo usan Int64. Decimales, exponentes, enteros mayores y sus grupos combinados usan Foundation.Decimal. No se convierten antes a JavaScript Number.

Opcionales con semántica Swift

El modo observado detecta ausencia y null; el modo global permite omitir todas las propiedades. Codable sintetizado lee ambos casos como nil y suele omitir esas propiedades al codificar. No mantiene la diferencia entre ausencia y null.

Decodificación configurada

makeJSONDecoder() conserva la estrategia de claves predeterminada. Cuando aparece Date, prueba ISO8601DateFormatter con y sin fracciones. Para volver a producir texto ISO, configura por separado la estrategia de fechas de JSONEncoder.

Límites antes de integrar

No sustituye un esquema
No interpreta JSON Schema ni OpenAPI, ni adivina enums o genera class, Core Data, SwiftData o peticiones. La decodificación sintetizada ignora claves desconocidas. La comprobación del calendario al inferir no convierte el ayudante exportado en un validador de negocio.
Presupuesto numérico conservador
Hasta 38 cifras significativas tras quitar ceros iniciales y finales; exponente original entre −128 y 127; exponente menos cifras decimales al menos −128; orden decimal normalizado hasta 127. También se aplica a valores mixtos y a la escritura original del cero.
Verifica el sistema de destino
Se probó compilación y vuelta numérica con Swift 6.3.1 en macOS 26, también en modo de lenguaje Swift 5, no con compiladores antiguos. Foundation antiguo puede perder precisión Decimal. Comprueba tu despliegue. No se conserva la diferencia de escritura entre 1.0 y 1e0.
Date representa un instante
Solo fechas completas válidas con zona y hasta tres decimales de segundo se infieren como Date, si todas las cadenas no null de esa posición cumplen. Fechas sin hora, sin zona, inválidas o más precisas quedan como String. Se pierden zona y formato originales. La inferencia se limita a 1583–9999; fechas anteriores quedan como String para evitar desplazamientos históricos del calendario. El ayudante también rechaza años anteriores a 1583.
Las claves deben distinguirse
Desactivar CodingKeys rechaza cualquier renombrado necesario. Palabras reservadas, colisiones y la propiedad CodingKeys se renombran. Se rechazan surrogates aislados en claves o valores y claves distintas equivalentes en NFC dentro del mismo objeto o modelo combinado.
Entrada estricta y limitada
Sin comentarios, comas finales, claves duplicadas, reparación, archivos, solicitudes URL ni ejecución Swift en el navegador. Límites: 500.000 caracteres, 50.000 nodos, profundidad 40, 100 campos por objeto combinado, 200 structs, 1.000 caracteres por clave/número y 1.000.000 de salida.

Preguntas sobre JSON a Swift

¿Se compila aquí el código generado?

No. La página genera código fuente, pero no ejecuta un compilador Swift en el navegador. JSON a Swift se validó durante el desarrollo con compilación real; prueba el archivo descargado en tu proyecto y sistema de destino.

¿Cómo se tratan los campos ausentes y los valores null?

El modo predeterminado los considera opcionales. La síntesis Codable lee ausencia y null como nil y normalmente omite ese campo al codificar. Si necesitas distinguir tres estados, añade una implementación personalizada.

¿Qué pasa con los identificadores no válidos?

Se normalizan según camelCase o conservación de nombres válidos. Los símbolos, palabras reservadas y colisiones se renombran y CodingKeys retiene la clave original. Si desactivas el mapeo y hace falta renombrar, se muestra un error.

¿El código generado incluye Codable?

Sí. Cada estructura implementa Codable y los valores mixtos usan un enum que también lo implementa. Usa makeJSONDecoder() con Root.self o [Root].self y conserva su estrategia de claves.

¿Qué estructuras JSON se admiten?

Se admite un objeto o un array no vacío compuesto solo por objetos en la raíz. Dentro se combinan arrays y se generan estructuras auxiliares. Objetos vacíos y valores heterogéneos reciben tipos más amplios.

¿Has encontrado una inferencia mejorable?

Prueba respuestas con campos ausentes

Usa JSON a Swift con null, números reales y variaciones de tu API, y verifica el código descargado en el entorno donde se ejecutará.