Swift Academy · पाठ

नाम बदलने के लिए CodingKeys

अलग-अलग JSON और प्रॉपर्टी नामों का मानचित्रण कीजिए।

पाठ 1, कुल 4 में से13 चरण

नाम बदलने के लिए CodingKeys, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

कुंजियों के नाम क्यों बदलें?

JSON API अक्सर आपके Swift प्रॉपर्टी नामों से अलग नामों का उपयोग करती हैं — first_name बनाम firstName। CodingKeys एनम आपके मॉडल का API बदले बिना इन दोनों के बीच संबंध बनाता है।

import Foundation

struct User: Codable {
    var firstName: String
    enum CodingKeys: String, CodingKey {
        case firstName = "first_name"
    }
}

print("CodingKeys maps firstName to first_name")

CodingKeys की संरचना

CodingKeys एक नेस्टेड एनम है, जो String, CodingKey के अनुरूप होता है। हर केस किसी प्रॉपर्टी नाम से मेल खाता है; उसका रॉ मान उपयोग की जाने वाली JSON कुंजी होता है।

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)

बदली हुई कुंजियों के साथ डिकोड करना

डिकोड करते समय Decoder CodingKeys में मौजूद रॉ मान की सहायता से हर प्रॉपर्टी खोजता है, इसलिए snake_case JSON से camelCase प्रॉपर्टी भर जाती हैं।

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)

बदली हुई कुंजियों के साथ एन्कोड करना

एन्कोडिंग में इसी मैपिंग का उलटा उपयोग होता है: आउटपुट JSON में Swift प्रॉपर्टी नामों के बजाय रॉ-मान वाली कुंजियाँ होती हैं।

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)!)

सभी प्रॉपर्टी सूचीबद्ध करना

एक बार CodingKeys एनम जोड़ने के बाद, उसमें हर उस प्रॉपर्टी के लिए केस होना चाहिए जिसे आप एन्कोड या डिकोड करना चाहते हैं। बिना रॉ मान वाले केस प्रॉपर्टी का नाम जैसा है वैसा ही उपयोग करते हैं।

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)!)

किसी प्रॉपर्टी को छोड़ना

CodingKeys से किसी प्रॉपर्टी को हटा देने पर वह एन्कोडिंग और डिकोडिंग से बाहर हो जाती है। ऐसी प्रॉपर्टी का डिफ़ॉल्ट मान होना चाहिए, ताकि अपने-आप बनने वाला init अभी भी प्रकार बना सके।

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)

कई कुंजियों के नाम बदलना

जितनी कुंजियों की आवश्यकता हो, उतनी मैप करें। हर केस किसी Swift प्रॉपर्टी को उस सटीक JSON कुंजी से जोड़ता है जिसकी सर्वर को अपेक्षा होती है।

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)

अधिक स्पष्ट नामों से मैप करना

CodingKeys केवल snake_case के लिए नहीं है। इसका उपयोग अस्पष्ट API कुंजियों के नाम बदलकर स्पष्ट Swift प्रॉपर्टी नाम देने के लिए भी करें।

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)

नेस्टेड प्रकारों के साथ CodingKeys

हर Codable प्रकार का अपना CodingKeys होता है। कोई नेस्टेड स्ट्रक्चर अपने कुंजियों के नाम पैरेंट से स्वतंत्र रूप से बदल सकता है।

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)

बदली हुई कुंजियों के साथ राउंड-ट्रिप

वही CodingKeys दोनों दिशाओं को नियंत्रित करता है, इसलिए कोई मान snake_case में एन्कोड होकर उसी Swift मान में वापस डिकोड हो जाता है।

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 का उपयोग कब करें

जब अलग-अलग कुंजियों पर सटीक नियंत्रण चाहिए, केवल कुछ कुंजियाँ अलग हों, या किसी प्रॉपर्टी को छोड़ना हो, तब स्पष्ट CodingKeys एनम का उपयोग करें। एकरूप snake_case API के लिए डिकोडिंग रणनीति अधिक सरल हो सकती है।

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)

त्वरित जाँच: CodingKeys

कुंजियों के नाम बदलने की अपनी समझ का परीक्षण करें।

पुनरावलोकन: नाम बदलने के लिए CodingKeys

आपने कुंजियों पर सटीक नियंत्रण करना सीखा:

  • प्रकार के भीतर नेस्टेड enum CodingKeys: String, CodingKey घोषित करें।
  • हर केस का रॉ मान JSON कुंजी होता है; केस एन्कोडिंग और डिकोडिंग दोनों को नियंत्रित करते हैं।
  • हर उस प्रॉपर्टी की सूची दें जिसे आप कोड करना चाहते हैं; किसी प्रॉपर्टी को छोड़ने पर वह बाहर हो जाती है (उसका डिफ़ॉल्ट मान आवश्यक है)।
  • नेस्टेड प्रकारों के अपने स्वतंत्र CodingKeys होते हैं।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “नाम बदलने के लिए CodingKeys” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “नाम बदलने के लिए CodingKeys” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“नाम बदलने के लिए CodingKeys” में मैं क्या सीखूँगा?

अलग-अलग JSON और प्रॉपर्टी नामों का मानचित्रण कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“नाम बदलने के लिए CodingKeys” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. नाम बदलने के लिए CodingKeys
  2. की और तारीख की डिकोडिंग रणनीतियाँ
  3. मैन्युअल encode(to:) और init(from:)
  4. विषम JSON की डिकोडिंग
← Swift Academy पर वापस जाएँ