Ricerca…


introduzione

Il codice è aggiunto con Xcode 9, iOS 11 e Swift 4. Codable viene utilizzato per rendere i tuoi tipi di dati codificabili e decodificabili per la compatibilità con rappresentazioni esterne come JSON.

Uso codificabile per supportare sia la codifica che la decodifica, dichiarare la conformità a Codable, che combina i protocolli Encodable e Decodable. Questo processo è noto per rendere i tuoi tipi codificabili.

Utilizzo di Codifica con JSONEncoder e JSONDecoder in Swift 4

Prendiamo un esempio con Structure of Movie, qui abbiamo definito la struttura come Codable. Quindi, possiamo codificarlo e decodificarlo facilmente.

struct Movie: Codable {
    enum MovieGenere: String, Codable {
        case horror, skifi, comedy, adventure, animation
    }
    
    var name : String
    var moviesGenere : [MovieGenere]
    var rating : Int
}

Possiamo creare un oggetto dal film come:

let upMovie = Movie(name: "Up", moviesGenere: [.comedy , .adventure, .animation], rating : 4)

L'upMovie contiene il nome "Up" ed è movieGenere è una commedia, un'avventura e una strega d'animazione che contiene 4 valutazioni su 5.

Codificare

JSONEncoder è un oggetto che codifica le istanze di un tipo di dati come oggetti JSON. JSONEncoder supporta l'oggetto codificabile.

// Encode data
let jsonEncoder = JSONEncoder()
do {
    let jsonData = try jsonEncoder.encode(upMovie)
    let jsonString = String(data: jsonData, encoding: .utf8)
    print("JSON String : " + jsonString!)
}
catch {
}

JSONEncoder ci fornirà i dati JSON che vengono utilizzati per recuperare la stringa JSON.

La stringa di output sarà simile a:

{
  "name": "Up",
  "moviesGenere": [
    "comedy",
    "adventure",
    "animation"
  ],
  "rating": 4
}

Decodificare

JSONDecoder è un oggetto che decodifica le istanze di un tipo di dati dagli oggetti JSON. Possiamo recuperare l'oggetto dalla stringa JSON.

do {
    // Decode data to object
    
    let jsonDecoder = JSONDecoder()
    let upMovie = try jsonDecoder.decode(Movie.self, from: jsonData)
    print("Rating : \(upMovie.name)")
    print("Rating : \(upMovie.rating)")
}
catch {
}

Decodificando la JSONData riceviamo indietro l'oggetto Movie. Quindi possiamo ottenere tutti i valori che vengono salvati in quell'oggetto.

L'output sarà come:

Name : Up
Rating : 4


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow