Codable : encoder et décoder du JSON
Se conformer à Codable, personnaliser CodingKeys et décoder des conteneurs imbriqués.
Codable : encoder et décoder du JSON est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.
Protocole Codable
Codable est un alias de type pour Encodable & Decodable. Les types conformes peuvent être encodés en JSON et décodés automatiquement depuis le JSON.
struct User: Codable {
var name: String
var age: Int
}Génération automatique
Swift synthétise les implémentations de Codable lorsque toutes les propriétés stockées sont elles-mêmes conformes à Codable.
struct Product: Codable {
var id: Int
var title: String
var price: Double
// init(from:) and encode(to:) are auto-generated
}Décodage du JSON
Utilisez JSONDecoder pour décoder des Data vers votre type Decodable.
let json = #"{"name":"Alice","age":30}"#.data(using: .utf8)!
let user = try JSONDecoder().decode(User.self, from: json)
print(user.name) // AliceEncodage en JSON
Utilisez JSONEncoder pour encoder une valeur Codable en Data.
let user = User(name: "Bob", age: 25)
let data = try JSONEncoder().encode(user)
print(String(data: data, encoding: .utf8)!)CodingKeys personnalisés
Utilisez une énumération CodingKeys pour établir la correspondance entre les noms des propriétés Swift et les clés JSON.
struct Article: Codable {
var createdAt: Date
enum CodingKeys: String, CodingKey {
case createdAt = "created_at"
}
}Stratégies de décodage des dates
Configurez JSONDecoder.dateDecodingStrategy pour analyser les dates dans différents formats.
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
let article = try decoder.decode(Article.self, from: data)Conteneurs imbriqués
Décodez les objets JSON imbriqués en définissant des structures Codable imbriquées ou en utilisant manuellement des conteneurs indexés.
struct Response: Codable {
struct Data: Codable {
var users: [User]
}
var data: Data
}
let resp = try JSONDecoder().decode(Response.self, from: json)Logique de décodage personnalisée
Redéfinissez init(from:) pour gérer les structures JSON non standard ou appliquer des transformations pendant le décodage.
struct Rating: Codable {
var stars: Int
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
let raw = try container.decode(Double.self)
stars = Int(raw.rounded())
}
func encode(to encoder: Encoder) throws {
var container = encoder.singleValueContainer()
try container.encode(Double(stars))
}
}keyDecodingStrategy
Utilisez .convertFromSnakeCase pour convertir automatiquement les clés JSON en snake_case en propriétés Swift en camelCase.
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let user = try decoder.decode(User.self, from: data)
// "first_name" → firstNameOptions d'encodage
Configurez JSONEncoder.outputFormatting pour obtenir une sortie mise en forme ou triée.
let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(product)Gestion des champs facultatifs
Déclarez les propriétés comme facultatives afin de gérer proprement les clés JSON manquantes sans lever d'erreur.
struct User: Codable {
var name: String
var bio: String? // nil if "bio" key is absent from JSON
}Vérification rapide
Quelle stratégie de JSONDecoder convertit automatiquement les clés JSON en snake_case en noms de propriétés Swift en camelCase ?
Récapitulatif de la leçon
Adoptez Codable pour encoder et décoder automatiquement le JSON. Utilisez CodingKeys pour remapper les noms de propriétés, keyDecodingStrategy = .convertFromSnakeCase avec les API qui utilisent le snake_case, init(from:) pour le JSON non standard et dateDecodingStrategy pour analyser les dates.
Questions Fréquemment Posées
La leçon « Codable : encoder et décoder du JSON » est-elle gratuite ?
Oui — le texte complet de « Codable : encoder et décoder du JSON » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Codable : encoder et décoder du JSON » ?
Se conformer à Codable, personnaliser CodingKeys et décoder des conteneurs imbriqués. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Swift Academy ?
Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Codable : encoder et décoder du JSON » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?
Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- URLSession data(from:) avec async/await
- Codable : encoder et décoder du JSON
- Gestion des erreurs et codes d’état HTTP
- Logique de nouvelle tentative et URLSession en arrière-plan