Pengodean dengan JSONEncoder
Hasilkan data JSON dari nilai Swift.
Pengodean dengan JSONEncoder adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
Membuat JSONEncoder
JSONEncoder adalah komponen utama yang mengubah nilai Encodable apa pun menjadi Data JSON. Buat satu instance, lalu panggil encode(_:) pada nilai Anda.
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")Dari Data Menjadi String yang Mudah Dibaca
encode(_:) mengembalikan Data biner. Untuk membacanya, dekode byte tersebut sebagai UTF-8 dengan 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)Keluaran dengan Format Rapi
Secara bawaan, JSON berformat ringkas. Atur outputFormatting = .prettyPrinted untuk menambahkan indentasi dan baris baru, sehingga hasilnya mudah dibaca manusia.
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)!)Kunci Terurut untuk Keluaran yang Stabil
Gabungkan opsi dalam sebuah array. Menambahkan .sortedKeys akan mengurutkan kunci berdasarkan abjad, sehingga keluaran menjadi deterministik—sangat berguna untuk pengujian dan cuplikan.
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)!)Mengodekan Array
Anda dapat mengodekan koleksi secara langsung. Array berisi nilai Encodable akan menjadi array 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)!)Mengodekan Kamus
Kamus [String: Encodable-element] akan dienkode menjadi objek JSON. Perhatikan bahwa urutan kunci tidak dijamin kecuali Anda menambahkan .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)!)Mengodekan Struktur Bertingkat
Jenis Codable bertingkat dienkode secara rekursif, sehingga objek JSON bertingkat dihasilkan secara otomatis.
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)!)Menggunakan Kembali Encoder
JSONEncoder yang telah dikonfigurasi dapat digunakan kembali untuk banyak nilai. Konfigurasikan sekali, lalu terus gunakan format yang sama di seluruh kode Anda.
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)!)
}Mengodekan Angka dan Boolean
Properti numerik dan boolean dienkode sebagai nilai literal JSON—tanpa tanda kutip. String diberi tanda kutip; Int, Double, dan Bool tidak.
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)!)Mengodekan Nilai Opsional
Secara bawaan, nilai opsional nil dihilangkan sepenuhnya dari JSON. Nilai opsional yang tidak nil dienkode sebagai nilai yang dibungkusnya.
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)!)Menyatukan Semuanya
Alur pengodean yang umum: buat nilainya, konfigurasikan encoder, panggil encode, lalu konversikan Data menjadi String untuk pencatatan log atau pengiriman.
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)!)Pemeriksaan Cepat: JSONEncoder
Uji pengetahuan Anda tentang pengodean.
Ringkasan: Pengodean dengan JSONEncoder
Anda telah mempelajari cara mengubah nilai Swift menjadi JSON:
encode(_:)mengembalikanData; konversikan denganString(data:encoding:).outputFormattingdengan.prettyPrinteddan.sortedKeysmengatur tata letak.- Array, kamus, jenis bertingkat, angka, boolean, dan nilai opsional semuanya dienkode dengan tepat.
- Encoder yang telah dikonfigurasi dapat digunakan kembali untuk banyak nilai.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pengodean dengan JSONEncoder” gratis?
Ya — teks lengkap “Pengodean dengan JSONEncoder” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pengodean dengan JSONEncoder”?
Hasilkan data JSON dari nilai Swift. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Pengodean dengan JSONEncoder” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Kesesuaian dengan Codable
- Pengodean dengan JSONEncoder
- Pendekodean dengan JSONDecoder
- Menangani Tipe Opsional dan Bersarang