Yeniden Adlandırma için CodingKeys
Farklı JSON ve özellik adlarını eşleştirin.
Yeniden Adlandırma için CodingKeys, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 1. 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.
Anahtarlar Neden Yeniden Adlandırılır
JSON API'leri çoğu zaman Swift özellik adlarından farklı adlar kullanır: first_name ve firstName gibi. Bir CodingKeys numaralandırması, modelinizin API'sini değiştirmeden bu ikisi arasında köprü kurar.
import Foundation
struct User: Codable {
var firstName: String
enum CodingKeys: String, CodingKey {
case firstName = "first_name"
}
}
print("CodingKeys maps firstName to first_name")CodingKeys'in Yapısı
CodingKeys, String, CodingKey uyumluluğuna sahip iç içe bir numaralandırmadır. Her durum bir özellik adıyla eşleşir; ham değeri ise kullanılacak JSON anahtarıdır.
import Foundation
struct Product: Codable {
var productName: String
var unitPrice: Double
enum CodingKeys: String, CodingKey {
case productName = "product_name"
case unitPrice = "unit_price"
}
}
print(Product.CodingKeys.productName.rawValue)Yeniden Adlandırılmış Anahtarlarla Kod Çözme
Kod çözme sırasında kod çözücü, her özelliği CodingKeys içindeki ham değeriyle arar. Böylece alt çizgili JSON adları camelCase özellikleri doldurur.
import Foundation
struct User: Codable {
var firstName: String
enum CodingKeys: String, CodingKey {
case firstName = "first_name"
}
}
let json = "{\"first_name\":\"Ada\"}"
let u = try JSONDecoder().decode(User.self, from: json.data(using: .utf8)!)
print(u.firstName)Yeniden Adlandırılmış Anahtarlarla Kodlama
Kodlama aynı eşlemeyi ters yönde kullanır: Çıktı JSON'ı Swift özellik adlarını değil, ham değerli anahtarları içerir.
import Foundation
struct User: Codable {
var firstName: String
enum CodingKeys: String, CodingKey {
case firstName = "first_name"
}
}
let data = try JSONEncoder().encode(User(firstName: "Ada"))
print(String(data: data, encoding: .utf8)!)Tüm Özellikleri Listeleme
Bir CodingKeys numaralandırması eklediğinizde, kodlanmasını veya kodunun çözülmesini istediğiniz her özellik için bir durum içermelidir. Ham değeri olmayan ve tuttuğunuz durumlar, özellik adını olduğu gibi kullanır.
import Foundation
struct Item: Codable {
var id: Int
var displayName: String
enum CodingKeys: String, CodingKey {
case id
case displayName = "display_name"
}
}
let data = try JSONEncoder().encode(Item(id: 1, displayName: "Pen"))
print(String(data: data, encoding: .utf8)!)Bir Özelliği Çıkarma
Bir özelliği CodingKeys dışında bırakmak, onu kodlama ve kod çözme işlemlerinden çıkarır. Sentezlenen başlatıcının türü yine oluşturabilmesi için böyle bir özelliğin varsayılan değeri olmalıdır.
import Foundation
struct User: Codable {
var name: String
var cachedToken: String = "none"
enum CodingKeys: String, CodingKey {
case name
}
}
let u = try JSONDecoder().decode(User.self, from: "{\"name\":\"Ada\"}".data(using: .utf8)!)
print(u.name, u.cachedToken)Birden Çok Anahtarı Yeniden Adlandırma
İhtiyacınız olduğu kadar çok anahtarı eşleyin. Her durum, bir Swift özelliğini sunucunun beklediği tam JSON anahtarıyla eşleştirir.
import Foundation
struct Account: Codable {
var userId: Int
var isVerified: Bool
enum CodingKeys: String, CodingKey {
case userId = "user_id"
case isVerified = "is_verified"
}
}
let json = "{\"user_id\":7,\"is_verified\":true}"
let a = try JSONDecoder().decode(Account.self, from: json.data(using: .utf8)!)
print(a.userId, a.isVerified)Daha Anlaşılır Adlara Eşleme
CodingKeys yalnızca alt çizgili yazım için kullanılmaz. Şifreli API anahtarlarını anlaşılır Swift özellik adlarına dönüştürmek için de kullanabilirsiniz.
import Foundation
struct Reading: Codable {
var temperature: Double
enum CodingKeys: String, CodingKey {
case temperature = "t"
}
}
let json = "{\"t\":19.5}"
let r = try JSONDecoder().decode(Reading.self, from: json.data(using: .utf8)!)
print(r.temperature)İç İçe Türlerle CodingKeys
Her Codable türünün kendi CodingKeys'i vardır. İç içe bir yapı, ana türden bağımsız olarak kendi anahtarlarını yeniden adlandırabilir.
import Foundation
struct Meta: Codable {
var createdAt: String
enum CodingKeys: String, CodingKey { case createdAt = "created_at" }
}
struct Doc: Codable { var title: String; var meta: Meta }
let json = "{\"title\":\"A\",\"meta\":{\"created_at\":\"today\"}}"
let d = try JSONDecoder().decode(Doc.self, from: json.data(using: .utf8)!)
print(d.meta.createdAt)Yeniden Adlandırılmış Anahtarlarla Gidiş-Dönüş
Aynı CodingKeys her iki yöndeki işlemi de yönetir. Böylece bir değer alt çizgili biçimde kodlanır ve aynı Swift değerine geri çözülebilir.
import Foundation
struct User: Codable {
var firstName: String
var lastName: String
enum CodingKeys: String, CodingKey {
case firstName = "first_name"
case lastName = "last_name"
}
}
let u = User(firstName: "Ada", lastName: "Lovelace")
let data = try JSONEncoder().encode(u)
let back = try JSONDecoder().decode(User.self, from: data)
print(back.firstName, back.lastName)CodingKeys Ne Zaman Kullanılmalı
Tek tek anahtarlar üzerinde hassas denetim gerektiğinde, yalnızca bazı anahtarlar farklı olduğunda veya bir özelliği çıkarmanız gerektiğinde açık bir CodingKeys numaralandırması kullanın. Baştan sona alt çizgili adlandırma kullanan bir API için kod çözme stratejisi daha basit olabilir.
import Foundation
struct Event: Codable {
var eventName: String
var startTime: String
enum CodingKeys: String, CodingKey {
case eventName = "name"
case startTime = "start_time"
}
}
let json = "{\"name\":\"Launch\",\"start_time\":\"10:00\"}"
let e = try JSONDecoder().decode(Event.self, from: json.data(using: .utf8)!)
print(e.eventName, e.startTime)Hızlı Kontrol: CodingKeys
Anahtarları yeniden adlandırma hakkındaki anlayışınızı sınayın.
Özet: Yeniden Adlandırma için CodingKeys
Anahtarlar üzerinde hassas denetim kurmayı öğrendiniz:
- Türün içinde iç içe olacak şekilde
enum CodingKeys: String, CodingKeybildirin. - Her durumun ham değeri JSON anahtarıdır; durumlar hem kodlama hem de kod çözme işlemlerini yönetir.
- Kodlamak istediğiniz her özelliği listeleyin; birini dışarıda bırakmak onu çıkarır (varsayılan değere ihtiyacı vardır).
- İç içe türlerin kendi bağımsız
CodingKeysnumaralandırmaları vardır.
Sıkça Sorulan Sorular
“Yeniden Adlandırma için CodingKeys” dersi ücretsiz mi?
Evet — “Yeniden Adlandırma için CodingKeys” 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.
“Yeniden Adlandırma için CodingKeys” dersinde ne öğreneceğim?
Farklı JSON ve özellik adlarını eşleştirin. 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 1. dersidir.
“Yeniden Adlandırma için CodingKeys” 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
- Yeniden Adlandırma için CodingKeys
- Anahtar ve Tarih Kod Çözme Stratejileri
- Elle encode(to:) ve init(from:)
- Heterojen JSON Kodunu Çözme