DocumentiImmaginiMediaStrumenti PDF

JSON in Swift Struct

Genera struct Swift Codable da JSON, gratis, nel tuo browser.

Processed in your browser

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.

Tre passaggi, senza complicazioni

1

Incolla il tuo JSON

Incolla il JSON della tua API o risposta web. Funziona con oggetti annidati, array e qualsiasi struttura JSON valida.

2

Generazione istantanea

Lo strumento genera automaticamente struct Swift conformi al protocollo Codable, con CodingKeys quando necessario.

3

Copia il codice

Copia le struct generate e usale direttamente nel tuo progetto iOS, macOS o SwiftUI.

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.