Codable Swift: पूर्ण गाइड उदाहरणों के साथ
1. यह क्या है और क्यों ज़रूरी है
Codable Swift भाषा में एक बिल्ट-इन प्रोटोकॉल (typealias Encodable & Decodable) है, जो Swift 4 में पेश किया गया था। यह कस्टम डेटा टाइप्स को JSON, Property List (plist) और अन्य फॉर्मेट्स में सीरियलाइज़ और डी-सीरियलाइज़ करने का एक डिक्लेरेटिव तरीका प्रदान करता है। स्ट्रक्चर को मैन्युअल रूप से डिक्शनरी में बदलने के लिए भारी कोड लिखने के बजाय, Codable आपके मॉडल के प्रॉपर्टीज़ के आधार पर एन्कोडिंग/डिकोडिंग लॉजिक ऑटोमैटिक जनरेट करता है।
यह क्यों ज़रूरी है? आधुनिक iOS/macOS डेवलपमेंट में, लगभग हर ऐप सर्वर API से JSON फॉर्मेट में डेटा प्राप्त और भेजता है। Codable के बिना, डेवलपर को मैन्युअल रूप से लूप लिखने, टाइप चेक करने, ऑप्शनल वैल्यू हैंडल करने और रिवर्स पार्सर लिखने पड़ते। Codable इस समस्या को हल करता है, कोड को क्लीनर, सुरक्षित बनाता है और डेवलपमेंट टाइम काफी कम करता है। यह Apple इकोसिस्टम में JSON के साथ काम करने का डी-फैक्टो स्टैंडर्ड है।
Codable Encodable (Swift टाइप से डेटा में बदलने के लिए) और Decodable (डेटा से Swift टाइप में बदलने के लिए) प्रोटोकॉल पर आधारित है। इन्हें मिलाकर, आपको सीरियलाइज़ेशन का पूरा चक्र मिलता है। यह लाइब्रेरी JSONEncoder और JSONDecoder के साथ गहराई से इंटीग्रेटेड है, जो JSON के साथ काम करने के मुख्य टूल हैं।
2. इंस्टॉलेशन
Codable Swift की स्टैंडर्ड लाइब्रेरी (Foundation) का हिस्सा है। किसी अतिरिक्त इंस्टॉलेशन की ज़रूरत नहीं है। इसे कनेक्ट करने के लिए आपको pip, npm, CocoaPods या Swift Package Manager का उपयोग करने की आवश्यकता नहीं है। बस अपनी फ़ाइल में Foundation इम्पोर्ट करें:
import Foundation
अगर आप Swift का उपयोग Linux एनवायरनमेंट में कर रहे हैं (जैसे Swift Package Manager के ज़रिए), तो Codable आउट-ऑफ-द-बॉक्स उपलब्ध है। Vapor जैसे सर्वर-साइड फ्रेमवर्क में, Codable डिफ़ॉल्ट रूप से उपयोग होता है।
3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण
चलिए एक सरल यूज़र स्ट्रक्चर बनाते हैं और इसे JSON में सीरियलाइज़/डी-सीरियलाइज़ करते हैं।
import Foundation
// 1. Codable प्रोटोकॉल को फॉलो करने वाला मॉडल डिफाइन करें
struct User: Codable {
let id: Int
let name: String
let email: String
}
// 2. एक इंस्टेंस बनाएं
let user = User(id: 1, name: "Ravi", email: "ravi@example.com")
// 3. JSON में एन्कोड करें
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted // सुंदर आउटपुट के लिए
do {
let jsonData = try encoder.encode(user)
if let jsonString = String(data: jsonData, encoding: .utf8) {
print("JSON: \n\(jsonString)")
}
// 4. वापस डीकोड करें
let decoder = JSONDecoder()
let decodedUser = try decoder.decode(User.self, from: jsonData)
print("डीकोड किया गया यूज़र: \(decodedUser.name), ईमेल: \(decodedUser.email)")
} catch {
print("त्रुटि: \(error)")
}
कंसोल आउटपुट:
JSON:
{
"id" : 1,
"name" : "Ravi",
"email" : "ravi@example.com"
}
डीकोड किया गया यूज़र: Ravi, ईमेल: ravi@example.com
जैसा कि आप देख सकते हैं, कोड की कुछ ही लाइनों में सीरियलाइज़ेशन तैयार है।
4. मुख्य तरीके/फंक्शन/क्लासेज़
आइए Codable के मुख्य कम्पोनेंट्स को समझते हैं जिनका आप लगातार उपयोग करेंगे।
4.1 JSONEncoder
सिग्नेचर: class JSONEncoder : NSCoder
यह क्या करता है: Encodable प्रोटोकॉल को फॉलो करने वाले टाइप के इंस्टेंस को Data (JSON) ऑब्जेक्ट में बदलता है।
पुस्तकालय में भी
अनुशंसाएँ