0Pricing
Swift Academy · Ders

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, CodingKey bildirin.
  • 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 CodingKeys numaralandı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

  1. Yeniden Adlandırma için CodingKeys
  2. Anahtar ve Tarih Kod Çözme Stratejileri
  3. Elle encode(to:) ve init(from:)
  4. Heterojen JSON Kodunu Çözme
← Swift Academy Sayfasına Dön