Encodage avec JSONEncoder
Produisez des données JSON à partir de valeurs Swift.
Encodage avec JSONEncoder 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.
Créer un JSONEncoder
JSONEncoder est l’outil principal qui transforme toute valeur Encodable en Data JSON. Créez-en un, puis appelez encode(_:) sur votre valeur.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let encoder = JSONEncoder()
let data = try encoder.encode(Movie(title: "Up", year: 2009))
print(data.count, "bytes")Des données à une chaîne lisible
encode(_:) renvoie des Data binaires. Pour les lire, décodez les octets en UTF-8 avec String(data:encoding:).
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let data = try JSONEncoder().encode(Movie(title: "Up", year: 2009))
let text = String(data: data, encoding: .utf8)!
print(text)Sortie avec mise en forme
Par défaut, le JSON est compact. Définissez outputFormatting = .prettyPrinted pour ajouter une indentation et des retours à la ligne, afin de rendre le résultat facile à lire pour les humains.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let data = try encoder.encode(Movie(title: "Up", year: 2009))
print(String(data: data, encoding: .utf8)!)Trier les clés pour obtenir une sortie stable
Combinez les options dans un tableau. L’ajout de .sortedKeys classe les clés par ordre alphabétique, ce qui rend la sortie déterministe : c’est idéal pour les évaluations et les instantanés.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
var rating: Double
}
let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(Movie(title: "Up", year: 2009, rating: 4.8))
print(String(data: data, encoding: .utf8)!)Encoder des tableaux
Vous pouvez encoder directement des collections. Un tableau de valeurs Encodable devient un tableau JSON.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let list = [Movie(title: "Up", year: 2009),
Movie(title: "Coco", year: 2017)]
let data = try JSONEncoder().encode(list)
print(String(data: data, encoding: .utf8)!)Encoder des dictionnaires
Un dictionnaire [String: Encodable-element] est encodé en objet JSON. Notez que l’ordre des clés n’est pas garanti, sauf si vous ajoutez .sortedKeys.
import Foundation
let scores: [String: Int] = ["alice": 90, "bob": 75]
let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
let data = try encoder.encode(scores)
print(String(data: data, encoding: .utf8)!)Encoder des structures imbriquées
Les types Codable imbriqués sont encodés récursivement, ce qui produit automatiquement des objets JSON imbriqués.
import Foundation
struct Author: Codable { var name: String }
struct Post: Codable {
var title: String
var author: Author
}
let p = Post(title: "Hello", author: Author(name: "Mae"))
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
print(String(data: try encoder.encode(p), encoding: .utf8)!)Réutiliser un encodeur
Un JSONEncoder configuré peut être réutilisé pour de nombreuses valeurs. Configurez-le une fois et conservez la même mise en forme dans tout votre code.
import Foundation
struct Tag: Codable { var name: String }
let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
for t in [Tag(name: "swift"), Tag(name: "json")] {
let data = try encoder.encode(t)
print(String(data: data, encoding: .utf8)!)
}Encoder les nombres et les booléens
Les propriétés numériques et booléennes sont encodées comme des littéraux JSON, sans guillemets. Les chaînes sont entre guillemets ; Int, Double et Bool ne le sont pas.
import Foundation
struct Stats: Codable {
var count: Int
var ratio: Double
var enabled: Bool
}
let data = try JSONEncoder().encode(Stats(count: 3, ratio: 0.75, enabled: true))
print(String(data: data, encoding: .utf8)!)Encoder les valeurs optionnelles
Par défaut, une valeur optionnelle nil est entièrement omise du JSON. Une valeur optionnelle non nulle est encodée comme la valeur qu’elle contient.
import Foundation
struct Item: Codable {
var name: String
var note: String?
}
let data = try JSONEncoder().encode(Item(name: "Pen", note: nil))
print(String(data: data, encoding: .utf8)!)Assembler le tout
Un déroulement d’encodage courant consiste à construire la valeur, configurer l’encodeur, appeler encode, puis convertir les Data en String pour la journalisation ou le transport.
import Foundation
struct Order: Codable {
var id: Int
var items: [String]
}
let order = Order(id: 42, items: ["a", "b"])
let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(order)
print(String(data: data, encoding: .utf8)!)Vérification rapide : JSONEncoder
Vérifiez vos connaissances sur l’encodage.
Récapitulatif : encodage avec JSONEncoder
Vous avez appris à transformer des valeurs Swift en JSON :
encode(_:)renvoie desData; convertissez-les avecString(data:encoding:).outputFormattingavec.prettyPrintedet.sortedKeyscontrôle la mise en forme.- Les tableaux, les dictionnaires, les types imbriqués, les nombres, les booléens et les valeurs optionnelles sont tous encodés de manière cohérente.
- Un encodeur configuré peut être réutilisé pour de nombreuses valeurs.
Questions Fréquemment Posées
La leçon « Encodage avec JSONEncoder » est-elle gratuite ?
Oui — le texte complet de « Encodage avec JSONEncoder » 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 « Encodage avec JSONEncoder » ?
Produisez des données JSON à partir de valeurs Swift. 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 « Encodage avec JSONEncoder » ?
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
- Se conformer à Codable
- Encodage avec JSONEncoder
- Décodage avec JSONDecoder
- Gestion des types optionnels et imbriqués