0Pricing
Swift Academy · Leçon

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 des Data ; convertissez-les avec String(data:encoding:).
  • outputFormatting avec .prettyPrinted et .sortedKeys contrô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

  1. Se conformer à Codable
  2. Encodage avec JSONEncoder
  3. Décodage avec JSONDecoder
  4. Gestion des types optionnels et imbriqués
← Retour à Swift Academy