Swift Academy · Pelajaran

Pengekodan dengan JSONEncoder

Hasilkan data JSON daripada nilai Swift.

Pelajaran 2 daripada 413 langkah

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(_:) mengembalikan Data; tukarkannya dengan String(data:encoding:).
  • outputFormatting bersama .prettyPrinted dan .sortedKeys mengawal 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.
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 “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

  1. Mematuhi Codable
  2. Pengekodan dengan JSONEncoder
  3. Penyahkodan dengan JSONDecoder
  4. Mengendalikan Jenis Optional dan Bersarang
← Kembali ke Swift Academy