Codable Swift : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Codable Swift : guide complet avec exemples

1. Qu'est-ce que Codable et pourquoi l'utiliser ?

Codable est un protocole intégré (typealias de Encodable & Decodable) dans le langage Swift, introduit avec Swift 4. Il offre une manière déclarative de sérialiser et désérialiser vos types de données personnalisés dans des formats comme JSON, Property List (plist) et autres. Au lieu d'écrire manuellement du code complexe pour convertir des structures en dictionnaires et vice versa, Codable génère automatiquement la logique d'encodage/décodage à partir des propriétés de votre modèle.

Pourquoi est-ce indispensable ? Dans le développement iOS/macOS moderne, presque chaque application interagit avec une API serveur pour recevoir et envoyer des données au format JSON. Sans Codable, le développeur devrait écrire manuellement des boucles, vérifier les types, gérer les valeurs optionnelles et créer un parseur inverse. Codable résout ce problème en rendant le code plus propre, plus sûr et en réduisant considérablement le temps de développement. C'est également le standard de facto pour travailler avec JSON dans l'écosystème Apple.

Codable repose sur les protocoles Encodable (pour convertir un type Swift en données) et Decodable (pour convertir des données en type Swift). En les combinant, vous obtenez un cycle complet de sérialisation. La bibliothèque est étroitement intégrée avec JSONEncoder et JSONDecoder, qui sont les outils principaux pour manipuler le JSON.

2. Installation

Codable fait partie de la bibliothèque standard Swift (Foundation). Aucune installation supplémentaire n'est requise. Vous n'avez pas besoin d'utiliser pip, npm, CocoaPods ou Swift Package Manager pour l'ajouter. Il vous suffit d'importer Foundation dans votre fichier :

import Foundation

Si vous utilisez Swift sous Linux (par exemple via Swift Package Manager), Codable est également disponible nativement. Pour les frameworks serveur comme Vapor, Codable est utilisé par défaut.

3. Démarrage rapide — exemple minimal fonctionnel

Créons une structure simple d'utilisateur et sérialisons/désérialisons-la en JSON.

import Foundation

// 1. Définir un modèle conforme au protocole Codable
struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

// 2. Créer une instance
let user = User(id: 1, name: "Alice", email: "alice@example.com")

// 3. Encoder en JSON
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted // Pour un affichage lisible

do {
    let jsonData = try encoder.encode(user)
    if let jsonString = String(data: jsonData, encoding: .utf8) {
        print("JSON : \n\(jsonString)")
    }

    // 4. Décoder en retour
    let decoder = JSONDecoder()
    let decodedUser = try decoder.decode(User.self, from: jsonData)
    print("Utilisateur décodé : \(decodedUser.name), email : \(decodedUser.email)")
} catch {
    print("Erreur : \(error)")
}

Sortie dans la console :

JSON :
{
  "id" : 1,
  "name" : "Alice",
  "email" : "alice@example.com"
}
Utilisateur décodé : Alice, email : alice@example.com

Comme vous le voyez, seulement quelques lignes de code suffisent pour une sérialisation complète.

4. Méthodes et classes principales

Examinons les composants clés de Codable que vous utiliserez régulièrement.

4.1 JSONEncoder

Signature : class JSONEncoder : NSCoder

Fonction : Convertit les instances de types conformes au protocole Encodable en un objet Data (JSON).

Recommendations