Che cosa fa questo strumento
Un campione JSON diventa struct Swift conformi a Codable.
{ "id": 1, "firstName": "Ada", "address": { "city": "Paris" } }
struct Root: Codable {
let id: Int
let firstName: String
let address: Address
}
struct Address: Codable {
let city: String
}
JSONDecoder legge questo direttamente. Ogni oggetto annidato ottiene la sua struct; un array di oggetti alla radice ottiene un typealias, così anche la lista ha un nome.
CodingKeys dove il nome è dovuto cambiare
Un nome di proprietà non contiene trattini, non comincia con una cifra, e una parola chiave richiede i backtick. Quando una chiave non può essere un nome così com’è, la corrispondenza viene scritta:
struct Root: Codable {
let contentType: String
let `class`: Int
let f2fa: Bool
enum CodingKeys: String, CodingKey {
case contentType = "content-type"
case `class`
case f2fa = "2fa"
}
}
Nota che `class` conserva la sua chiave senza corrispondenza: i backtick cambiano come Swift legge il nome, non il nome. L’enumerazione elenca tutti i casi appena esiste, perché una CodingKeys parziale lascerebbe cadere in silenzio le proprietà che omette.
JSONValue, e perché c’è
Un null, un array vuoto o uno misto non lasciano nulla da dedurre. Swift non ha un «valore JSON qualsiasi» pronto che si decodifichi e si codifichi, quindi una piccola enumerazione viene emessa una volta, alla fine:
let nickname: JSONValue?
let tags: [JSONValue]
Copre le sei cose che JSON può contenere, e nient’altro. Se più tardi sai che il campo è una stringa annullabile, String? la sostituisce e l’enumerazione può andarsene.
Ciò che un campione non può dire
Solo un null produce un opzionale. Tutto il resto non lo è, perché il documento aveva un valore — e un ? aggiunto dopo è un carattere, mentre uno di troppo nasconde un campo mancante finché non conta.
Int e Double vengono da come il numero è stato scritto, non dal suo valore: 3 dà Int, 3.0 dà Double. La distinzione conta in Swift, dove decodificare 3.5 in un Int solleva invece di arrotondare.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.