Convertitore Swift → JSON
Incolla struct Swift o tipi Codable. Ti torna JSON pulito.
Cosa fa questo tool
Se ti è mai capitato di definire uno struct Swift, renderlo Codable e poi accorgerti che ti serviva solo il JSON — senza aprire un playground o un simulatore — questo tool fa esattamente quello. Incolli lo Swift qui e ti torna JSON valido senza toccare JSONEncoder, Xcode o Swift Package Manager. Gestisce una singola istanza di struct, un file intero con più tipi, o qualcosa con array annidati e optional — il risultato è lo stesso: un documento JSON pulito con ogni proprietà preservata.
Il convertitore segue il modo in cui i valori Swift vengono davvero serializzati da JSONEncoder. String, Int, Double, Bool mappano sui loro equivalenti JSON ovvi. Gli array [Item] diventano array JSON; i dizionari [String: V] diventano oggetti JSON. Optional<T> con nil diventa null in JSON (oppure viene omesso, a seconda della strategia dell'encoder). UUID viene fuori come stringa esadecimale standard, Date come stringa ISO-8601 e URL come stringa. Gli enum con raw value emettono il raw value — lo stesso comportamento che ottieni con Foundation.JSONEncoder.
I CodingKeys custom vengono rispettati — se rinomini una proprietà per il JSON (case shippingAddress = "shipping_address"), l'output usa la chiave rinominata. I tipi Codable annidati vengono espansi inline. Incolla più struct insieme e ognuno diventa una entry di primo livello nell'output. Se vuoi approfondire come Swift modella il JSON, su apple/swift trovi i sorgenti, e Hacking with Swift ha spiegazioni leggibili sul protocollo Codable.
Come si usa
Tre passaggi. Funziona allo stesso modo che tu incolli una singola istanza di struct o un file di model completo.
Incolla il tuo Swift (o carica l'esempio)
Butta lo Swift così com'è nell'editor di sinistra. Uno struct, una class, un enum con valori associati, più tipi o array e dizionari annidati — va tutto bene. Clicca su Carica esempio per vedere prima un caso realistico.
Non serve togliere import Foundation o gli attributi @available. Lascia la sintassi Swift intatta — il parser ci pensa.
Premi Converti
Clicca sul bottone verde Converti. Il tool legge lo Swift, preserva ogni proprietà e tipo annidato, ed emette il JSON in una sola passata. Mentre lavora gira un breve indicatore di caricamento.
Copia il JSON
Il pannello di destra si riempie di JSON indentato. Copialo nel tuo test URLSession, in una fixture MockURLProtocol, negli esempi OpenAPI o in un client REST. Fine del giro.
Quando ti salva davvero la giornata
Fixture per API iOS
Hai uno struct di richiesta per una chiamata <code>URLSession</code> e ti serve un payload JSON per Postman o per un test. Incolli lo struct, prendi il JSON, tiri dritto.
Risposte da mock server
Trasforma i tuoi tipi <code>Codable</code> di risposta in JSON da piazzare in un mock server, in <code>MockURLProtocol</code> o in un file di risposta registrata — senza nessuna chiamata a <code>JSONEncoder</code>.
Test backend Vapor / SwiftNIO
Un servizio Vapor con 20 tipi <code>Content</code>. Genera file JSON di seed per i test di integrazione senza scrivere una singola chiamata di encode.
Docs ed esempi OpenAPI
Genera esempi JSON per la tua spec OpenAPI o la reference delle API direttamente dai model reali, così la documentazione resta allineata.
Domande frequenti
Il tipo deve conformarsi a Codable?
Il tipo non deve essere davvero conforme nel tuo codice perché il tool funzioni — il convertitore legge la forma e produce il JSON direttamente. Nella tua app, Codable (o almeno Encodable) è il modo per ottenere lo stesso risultato a runtime tramite JSONEncoder.
Rispetta i CodingKeys custom?
Sì. Se il tuo tipo definisce enum CodingKeys: String, CodingKey con raw value custom (case shippingAddress = "shipping_address"), l'output usa quelle chiavi rinominate.
Come vengono gestiti Optional, Date e UUID?
Optional<T> con nil diventa null in JSON. Date esce come stringa ISO-8601 di default (come JSONEncoder.DateEncodingStrategy.iso8601). UUID diventa una stringa esadecimale standard. URL diventa una stringa.
E gli enum con valori associati?
Gli enum con raw value emettono direttamente il valore. Gli enum con valori associati escono come oggetto taggato — la stessa forma che Swift stesso produce quando codifichi un case con valori associati.
Il mio codice viene salvato?
Il codice viene mandato al backend per la conversione e non viene persistito — non logghiamo il payload. Dà un'occhiata al codice sensibile prima di incollarlo.
Funziona con model SwiftUI e property wrapper?
Sì — property wrapper tipo @Published vengono scartati fino al valore interno. Le classi ObservableObject con proprietà @Published si serializzano pulite. I tipi di view specifici di SwiftUI non sono dati serializzabili, ma qualsiasi model dietro le tue view va benissimo.
Altri strumenti che ti possono servire
Swift → JSON è solo un pezzo del puzzle. Questi ci stanno bene insieme: