Pega la respuesta de tu API y obtén al instante los struct Swift listos para JSONDecoder. La herramienta detecta campos opcionales, anidados, arrays y fechas ISO 8601, y genera los CodingKeys cuando el nombre del JSON no coincide con el de Swift. Todo ocurre en tu navegador: tu JSON no sale de tu equipo.
JSON de entrada
Código Swift
Cómo decodificarlo
🔒 Todo se procesa en tu navegador. Tu JSON no se envía a ningún servidor.
Qué hace exactamente
- Crea un
struct(ofinal class) por cada objeto, con nombres encamelCase. - Marca como opcional cualquier campo que sea
nullo que falte en algún elemento de un array. - Unifica los objetos de un array: si pegas varios elementos, deduce mejor los opcionales.
- Si un campo mezcla tipos (por ejemplo, número y texto), añade un enum
JSONValue. - Puede usar
keyDecodingStrategy = .convertFromSnakeCaseen lugar deCodingKeys.
Limitaciones
- JSON no distingue
3de3.0: un número sin decimales se interpreta comoInt. - Un campo que solo vale
nullen tu ejemplo no permite saber su tipo. Se marca con unTODO. - Las fechas con milisegundos no las lee
.iso8601y requieren una estrategia personalizada. - Revisa siempre el resultado con la documentación real de tu API.
Preguntas frecuentes
¿Qué diferencia hay entre Codable y Decodable?
Codable es Decodable + Encodable. Si solo lees datos de una API, Decodable basta.
¿Cuándo uso CodingKeys y cuándo convertFromSnakeCase?
convertFromSnakeCase es cómodo si todas las claves son snake_case. Si hay claves irregulares, los CodingKeys son más explícitos y seguros.
¿Por qué algunos campos salen como opcionales?
Porque en tu ejemplo valen null o no aparecen siempre. Si no lo fueran, la decodificación fallaría en la app.
¿Se envía mi JSON a algún servidor?
No. El código se ejecuta en tu navegador.
Herramientas y artículos relacionados
- JSON Formatter & Validator — formatea y valida el JSON antes de convertirlo
- JWT Decoder — decodifica los tokens que devuelve tu API
- Consumiendo una API REST en Swift 6: adiós a las librerías externas
- Adiós a Alamofire: cómo estructurar una capa de red moderna en iOS con Swift 6