0Pricing
Swift Academy · Pelajaran

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

  1. Kesesuaian dengan Codable
  2. Pengodean dengan JSONEncoder
  3. Pendekodean dengan JSONDecoder
  4. Menangani Tipe Opsional dan Bersarang
← Kembali ke Swift Academy