Pengekodan dengan JSONEncoder
Hasilkan data JSON daripada nilai Swift.
Pengekodan dengan JSONEncoder ialah pelajaran Swift Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Swift Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.
Mencipta Pengekod JSON
JSONEncoder ialah alat utama yang menukarkan sebarang nilai Encodable kepada Data JSON. Cipta satu, kemudian 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")Daripada Data kepada String yang Boleh Dibaca
encode(_:) mengembalikan Data binari. Untuk membacanya, nyahkod bait 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 Pemformatan Cantik
Secara lalai, JSON adalah padat. Tetapkan outputFormatting = .prettyPrinted untuk menambah inden dan baris baharu supaya 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 Diisih untuk Keluaran Stabil
Gabungkan pilihan dengan tatasusunan. Menambah .sortedKeys akan menyusun kunci mengikut abjad, lalu menjadikan keluaran konsisten — sangat sesuai untuk ujian dan petikan.
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)!)Mengekodkan Tatasusunan
Anda boleh mengekodkan koleksi secara langsung. Tatasusunan nilai Encodable menjadi tatasusunan 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)!)Mengekodkan Kamus
Kamus [String: Encodable-element] dikodkan menjadi objek JSON. Perhatikan bahawa susunan kunci tidak dijamin melainkan anda menambah .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)!)Mengekodkan Struktur Bersarang
Jenis Codable bersarang dikodkan secara rekursif, lalu menghasilkan objek JSON bersarang secara automatik.
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 Semula Pengekod
JSONEncoder yang telah dikonfigurasi boleh digunakan semula untuk banyak nilai. Konfigurasikannya sekali dan terus gunakan pemformatan yang sama di seluruh kod 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)!)
}Mengekodkan Nombor dan Nilai Benar atau Palsu
Sifat berangka dan boolean dikodkan sebagai literal JSON — tanpa tanda petik. Teks diletakkan dalam tanda petik; 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)!)Mengekodkan Nilai Pilihan
Secara lalai, nilai pilihan nil tidak disertakan langsung dalam JSON. Nilai pilihan yang bukan nil dikodkan 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)!)Menggabungkan Semuanya
Aliran pengekodan biasa: bina nilai, konfigurasikan pengekod, panggil encode, kemudian tukarkan Data kepada String untuk pengelogan atau penghantaran.
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)!)Semakan Pantas: Pengekod JSON
Uji pengetahuan anda tentang pengekodan.
Imbas Kembali: Pengekodan dengan Pengekod JSON
Anda telah mempelajari cara menukarkan nilai Swift kepada JSON:
encode(_:)mengembalikanData; tukarkannya denganString(data:encoding:).outputFormattingbersama.prettyPrinteddan.sortedKeysmengawal susun atur.- Tatasusunan, kamus, jenis bersarang, nombor, nilai boolean dan nilai pilihan semuanya dikodkan dengan sewajarnya.
- Pengekod yang telah dikonfigurasi boleh digunakan semula untuk banyak nilai.
Pelajari Swift dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 122
- Pelajaran
- 409
Soalan Lazim
Adakah pelajaran “Pengekodan dengan JSONEncoder” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Swift Academy, termasuk “Pengekodan dengan JSONEncoder”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pengekodan dengan JSONEncoder”?
Hasilkan data JSON daripada nilai Swift. Anda berlatih Swift Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Swift Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Swift Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Pengekodan dengan JSONEncoder” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mematuhi Codable
- Pengekodan dengan JSONEncoder
- Penyahkodan dengan JSONDecoder
- Mengendalikan Jenis Optional dan Bersarang