Acerca de Generador de Struct Swift
Pega un objeto JSON y obtén definiciones de struct Swift con conformance Codable. Maneja objetos anidados, arrays, cadenas, enteros, doubles, booleanos y null (como opcionales).
Preguntas frecuentes
¿Qué es la generación de structs Swift desde JSON?
La generación de structs Swift desde JSON analiza una muestra de JSON y produce definiciones de structs Swift conformes a Codable. Cada clave se convierte en una propiedad y se generan CodingKeys cuando el nombre de la clave JSON difiere de la convención de nomenclatura Swift.
¿Cómo decodifico JSON con campos opcionales o faltantes usando Codable?
Marca los campos que pueden estar ausentes como Optional (String?, Int?, etc.) con un valor predeterminado de nil. Si la clave falta en el JSON, JSONDecoder asigna nil silenciosamente en lugar de lanzar un error. Usa decodeIfPresent(_:forKey:) en un init(from:) personalizado cuando necesites un comportamiento diferente para valores ausentes frente a null.
¿Cómo mapeo claves snake_case de JSON a propiedades camelCase de Swift?
Establece decoder.keyDecodingStrategy = .convertFromSnakeCase antes de decodificar. Esto convierte automáticamente first_name en firstName para todas las propiedades sin necesidad de CodingKeys. Para mapeos no estándar, implementa CodingKeys manualmente. El generador produce propiedades en camelCase siguiendo las convenciones de nomenclatura de Swift.
¿Debo generar un struct o una clase de Swift para modelos JSON?
Prefiere struct para modelos JSON: los structs son tipos por valor, seguros para concurrencia por defecto y más idiomáticos en Swift. Usa class cuando necesites semántica de referencia, herencia o cuando debas conformar a ObservableObject para SwiftUI. Ambos funcionan de forma idéntica con Codable para la decodificación de JSON.
¿Cómo uso el struct Codable generado con URLSession?
let task = URLSession.shared.dataTask(with: url) { data, _, _ in guard let data = data else { return }; let obj = try? JSONDecoder().decode(TuStruct.self, from: data) }; task.resume(). Con async/await: let (data, _) = try await URLSession.shared.data(from: url); let obj = try JSONDecoder().decode(TuStruct.self, from: data).
Advertisement300 × 250
Advertisement300 × 250