iOS Utilisation de codable avec JSONEncoder et JSONDecoder dans Swift 4


Exemple

Prenons un exemple avec Structure of Movie, ici nous avons défini la structure comme Codable. Donc, nous pouvons l'encoder et le décoder facilement.

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

Nous pouvons créer un objet à partir d'un film comme:

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

Le upMovie contient le nom «Up» et son film Genere est la comédie, l'aventure et l'animation qui contient 4 sur 5.

Encoder

JSONEncoder est un objet qui code les instances d'un type de données en tant qu'objets JSON. JSONEncoder prend en charge l'objet Codable.

// 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 nous donnera les données JSON utilisées pour récupérer la chaîne JSON.

La chaîne de sortie sera comme:

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

Décoder

JSONDecoder est un objet qui décode des instances d'un type de données à partir d'objets JSON. Nous pouvons récupérer l'objet à partir de la chaîne 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 {
}

En décodant la JSONDATA, nous recevrons l'objet Movie. Nous pouvons donc obtenir toutes les valeurs enregistrées dans cet objet.

Le résultat sera comme:

Name : Up
Rating : 4