JSON in Swift Struct
Genera struct Swift Codable da JSON, gratis, nel tuo browser.
A cosa serve
Da JSON a struct Swift Codable
Pronto per iOS e SwiftUI
Genera struct compatibili con URLSession, Alamofire, SwiftUI e Combine. Incolla direttamente in Xcode.
100% privato
Il tuo JSON dell'API non lascia mai il tuo browser. Nessuna registrazione, nessuna telemetria.
Codable corretto
CodingKeys automatici per snake_case, Optional per i nullable, tipi corretti come Int, Double e Bool. Codice idiomatico.
Istantaneo
Struct generate in tempo reale mentre scrivi. Nessun pulsante, nessuna attesa.
Come funziona
Tre passaggi, senza complicazioni
Incolla il tuo JSON
Incolla il JSON della tua API o risposta web. Funziona con oggetti annidati, array e qualsiasi struttura JSON valida.
Generazione istantanea
Lo strumento genera automaticamente struct Swift conformi al protocollo Codable, con CodingKeys quando necessario.
Copia il codice
Copia le struct generate e usale direttamente nel tuo progetto iOS, macOS o SwiftUI.
FAQ
Hai delle domande?
Codable e un alias di tipo introdotto in Swift 4 alla WWDC 2017 che combina due protocolli: Encodable, ovvero puo essere convertito in un formato esterno come JSON, e Decodable, ovvero puo essere creato da un formato esterno. Un tipo conforme a Codable puo sia serializzare che deserializzare dati. La conformanza viene ottenuta automaticamente tramite la sintesi del compilatore se tutte le proprieta sono anch'esse conformi a Codable.
Per i modelli di dati JSON le struct sono preferite per diverse ragioni: le struct sono value type e si copiano invece di referenziarsi, evitando problemi di stato condiviso; il compilatore puo ottimizzarle meglio; e in SwiftUI le struct funzionano meglio con il modello di dati reattivo. Le class o reference type hanno il loro posto quando hai bisogno di ereditarieta o identita di oggetto, ma per i modelli API le struct sono la pratica raccomandata.
CodingKeys e un enum annidato che mappa i nomi delle proprieta Swift ai nomi delle chiavi nel JSON. E necessario quando i nomi JSON, tipicamente snake_case nelle API REST, differiscono dalle convenzioni Swift di camelCase. Ad esempio, se il JSON ha first_name, il CodingKey mappa quella chiave al campo firstName della struct. Senza CodingKeys, Swift si aspetta che i nomi JSON corrispondano esattamente ai nomi delle proprieta.
In Swift, un tipo Optional marcato con il punto interrogativo puo avere un valore o essere nil. Quando un campo JSON puo essere assente o null, la proprieta della struct viene dichiarata come Optional: var email: String? invece di var email: String. Il JSONDecoder di Foundation gestisce automaticamente la deserializzazione: se la chiave e assente dal JSON o il suo valore e null, la proprieta viene impostata a nil senza generare un errore.
Il flusso tipico URLSession con Codable e: URLSession.shared.dataTask restituisce Data, poi JSONDecoder().decode con il tipo della struct e i dati converte i Data nella struct, e il risultato viene usato nell'interfaccia utente sul thread principale. Con Swift 5.5 e versioni successive e async/await, usa let data con try await URLSession.shared.data(for: request) seguito da let object con try JSONDecoder().decode con il tipo e i dati. Questo pattern e la base di tutta l'integrazione API in iOS moderno.
Swift per iOS e macOS, il protocollo Codable del 2017 e l'integrazione API con SwiftUI
Swift e stato presentato da Apple alla WWDC 2014 come successore di Objective-C per lo sviluppo di app su iOS, macOS, watchOS e tvOS. Con l'introduzione di Codable in Swift 4 alla WWDC 2017, lavorare con JSON si e semplificato radicalmente. Prima di Codable, gli sviluppatori usavano librerie di terze parti come SwiftyJSON o le estensioni Codable di Alamofire. Con Codable nativo, hai bisogno solo di JSONDecoder e struct ben tipizzate, senza dipendenze esterne.
SwiftUI, introdotto alla WWDC 2019, ha rafforzato l'uso delle struct come modelli di dati. L'architettura di SwiftUI basata su value type e il protocollo View come struct si adatta perfettamente ai modelli Codable. Pattern come MVVM in SwiftUI usano @Published in ViewModel ObservableObject con struct Codable come modelli, creando un flusso di dati prevedibile e testabile.
Con Swift 5.5 alla WWDC 2021 e l'introduzione di async/await, consumare API REST e diventato ancora piu pulito. URLSession.shared.data(for:) e ora una funzione async che elimina i completion handler annidati. Combinato con JSONDecoder, il pattern completo di fetch e decode richiede appena 3 righe di codice. Questo strumento genera le struct Codable necessarie per quel pattern, elaborando tutto nel tuo browser senza inviare i tuoi dati a nessun server.