Swift Academy · Pelajaran

Codable: Pengekodan dan Penyahkodan JSON

Patuhi Codable, gunakan CodingKeys tersuai dan lakukan penyahkodan bekas bersarang.

Pelajaran 2 daripada 413 langkah

Codable: Pengekodan dan Penyahkodan JSON 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.

Protokol Codable

Codable ialah alias jenis untuk Encodable & Decodable. Jenis yang mematuhi protokol ini boleh dikodkan kepada dan dinyahkod daripada JSON secara automatik.

struct User: Codable {
  var name: String
  var age: Int
}

Penjanaan Automatik

Swift menjana pelaksanaan Codable apabila semua sifat tersimpan itu sendiri mematuhi Codable.

struct Product: Codable {
  var id: Int
  var title: String
  var price: Double
  // init(from:) and encode(to:) are auto-generated
}

Menyahkod JSON

Gunakan JSONDecoder untuk menyahkod Data kepada jenis Decodable anda.

let json = #"{"name":"Alice","age":30}"#.data(using: .utf8)!
let user = try JSONDecoder().decode(User.self, from: json)
print(user.name) // Alice

Mengekod kepada JSON

Gunakan JSONEncoder untuk mengekod nilai Codable kepada Data.

let user = User(name: "Bob", age: 25)
let data = try JSONEncoder().encode(user)
print(String(data: data, encoding: .utf8)!)

CodingKeys Tersuai

Gunakan enum CodingKeys untuk memetakan antara nama sifat Swift dengan kunci JSON.

struct Article: Codable {
  var createdAt: Date
  enum CodingKeys: String, CodingKey {
    case createdAt = "created_at"
  }
}

Strategi Penyahkodan Tarikh

Konfigurasikan JSONDecoder.dateDecodingStrategy untuk menghuraikan tarikh dalam pelbagai format.

let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
let article = try decoder.decode(Article.self, from: data)

Bekas Bersarang

Nyahkod objek JSON bersarang dengan menentukan struct Codable bersarang atau menggunakan bekas berkunci secara manual.

struct Response: Codable {
  struct Data: Codable {
    var users: [User]
  }
  var data: Data
}
let resp = try JSONDecoder().decode(Response.self, from: json)

Logik Penyahkodan Tersuai

Atasi init(from:) untuk struktur JSON bukan standard atau untuk menggunakan transformasi semasa penyahkodan.

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

Gunakan .convertFromSnakeCase untuk menukar kunci JSON snake_case kepada sifat Swift camelCase secara automatik.

let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let user = try decoder.decode(User.self, from: data)
// "first_name" → firstName

Pilihan Pengekodan

Konfigurasikan JSONEncoder.outputFormatting untuk output yang diformat kemas atau diisih.

let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(product)

Mengendalikan Medan Optional

Tandakan sifat sebagai Optional untuk mengendalikan kunci JSON yang tiada dengan baik tanpa melemparkan ralat.

struct User: Codable {
  var name: String
  var bio: String?  // nil if "bio" key is absent from JSON
}

Semakan Pantas

Strategi JSONDecoder yang manakah memetakan kunci JSON snake_case kepada nama sifat Swift camelCase secara automatik?

Ringkasan Pelajaran

Patuhi Codable untuk pengekodan/penyahkodan JSON secara automatik. Gunakan CodingKeys untuk memetakan semula nama sifat, keyDecodingStrategy = .convertFromSnakeCase untuk API yang menggunakan snake_case, init(from:) tersuai untuk JSON bukan standard, dan dateDecodingStrategy untuk menghuraikan tarikh.

Percuma untuk bermula

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 “Codable: Pengekodan dan Penyahkodan JSON” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Swift Academy, termasuk “Codable: Pengekodan dan Penyahkodan JSON”, 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 “Codable: Pengekodan dan Penyahkodan JSON”?

Patuhi Codable, gunakan CodingKeys tersuai dan lakukan penyahkodan bekas bersarang. 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 “Codable: Pengekodan dan Penyahkodan JSON” 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

  1. URLSession data(from:) dengan async/await
  2. Codable: Pengekodan dan Penyahkodan JSON
  3. Pengendalian Ralat dan Kod Status HTTP
  4. Logik Cuba Semula dan URLSession Latar Belakang
← Kembali ke Swift Academy