JSONEncoder ile Kodlama
Swift değerlerinden JSON verisi üretin.
JSONEncoder ile Kodlama, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
JSONEncoder Oluşturma
JSONEncoder, herhangi bir Encodable değerini JSON Data'ya dönüştüren temel araçtır. Bir tane oluşturun, ardından değeriniz üzerinde encode(_:) çağrısını yapın.
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")Data'dan Okunabilir Bir Dizeye
encode(_:), ikili Data döndürür. Okumak için baytların kodunu String(data:encoding:) ile UTF-8 olarak çözün.
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)Biçimlendirilmiş Çıktı
JSON varsayılan olarak sıkıştırılmıştır. Girintiler ve satır sonları eklemek için outputFormatting = .prettyPrinted ayarını yapın; böylece sonuç insanların okuması için kolaylaşır.
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)!)Kararlı Çıktı için Sıralı Anahtarlar
Seçenekleri bir diziyle birleştirebilirsiniz. .sortedKeys eklemek anahtarları alfabetik olarak sıralar ve çıktıyı belirlenebilir hâle getirir; bu, sınamalar ve anlık görüntüler için harikadır.
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)!)Dizileri Kodlama
Derlemeleri doğrudan kodlayabilirsiniz. Encodable değerlerinden oluşan bir dizi, JSON dizisine dönüşür.
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)!)Sözlükleri Kodlama
[String: Encodable-element] sözlüğü bir JSON nesnesine kodlanır. .sortedKeys eklemediğiniz sürece anahtar sırasının garanti edilmediğine dikkat edin.
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)!)İç İçe Yapıları Kodlama
İç içe Codable türleri özyinelemeli olarak kodlanır ve otomatik olarak iç içe JSON nesneleri üretir.
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)!)Kodlayıcıyı Yeniden Kullanma
Yapılandırılmış bir JSONEncoder birçok değer için yeniden kullanılabilir. Bir kez yapılandırın ve kodunuz boyunca aynı biçimlendirmeyi uygulamayı sürdürün.
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)!)
}Sayıları ve Mantıksal Değerleri Kodlama
Sayısal ve mantıksal özellikler JSON sabitleri olarak, tırnak işareti olmadan kodlanır. Dizeler tırnak içine alınır; Int, Double ve Bool ise alınmaz.
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)!)İsteğe Bağlı Değerleri Kodlama
Varsayılan olarak nil olan isteğe bağlı bir değer JSON'dan tamamen çıkarılır. nil olmayan isteğe bağlı bir değer, içerdiği değer olarak kodlanır.
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)!)Hepsini Bir Araya Getirme
Tipik bir kodlama akışı şöyledir: değeri oluşturun, kodlayıcıyı yapılandırın, encode çağrısını yapın, ardından günlükleme veya aktarım için Data'yı bir String'e dönüştürün.
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)!)Hızlı Kontrol: JSONEncoder
Kodlama bilginizi sınayın.
Özet: JSONEncoder ile Kodlama
Swift değerlerini JSON'a dönüştürmeyi öğrendiniz:
encode(_:),Datadöndürür;String(data:encoding:)ile dönüştürün..prettyPrintedve.sortedKeysile birlikte kullanılanoutputFormatting, düzeni denetler.- Diziler, sözlükler, iç içe türler, sayılar, mantıksal değerler ve isteğe bağlı değerlerin tümü anlamlı biçimde kodlanır.
- Yapılandırılmış bir kodlayıcı birçok değer arasında yeniden kullanılabilir.
Sıkça Sorulan Sorular
“JSONEncoder ile Kodlama” dersi ücretsiz mi?
Evet — “JSONEncoder ile Kodlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“JSONEncoder ile Kodlama” dersinde ne öğreneceğim?
Swift değerlerinden JSON verisi üretin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“JSONEncoder ile Kodlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Codable'a Uyum Sağlama
- JSONEncoder ile Kodlama
- JSONDecoder ile Kod Çözme
- İsteğe Bağlı ve İç İçe Türleri İşleme