Swift में JSON के साथ काम करें: शुरुआती के लिए पार्सिंग और सीरियलाइज़ेशन
\n\nJSON (JavaScript Object Notation) आधुनिक मोबाइल और वेब एप्लिकेशन में डेटा एक्सचेंज का सबसे लोकप्रिय फॉर्मेट है। अगर आप iOS या macOS के लिए Swift में डेवलपमेंट कर रहे हैं, तो JSON को पार्स और सीरियलाइज़ करना एक ज़रूरी स्किल है। इस आर्टिकल में हम JSON के साथ काम करने के सभी मुख्य तरीकों को समझेंगे: पुराने JSONSerialization से लेकर आधुनिक Codable प्रोटोकॉल तक। यह सामग्री उन शुरुआती डेवलपर्स के लिए है जिन्हें Swift की बुनियादी जानकारी है।
JSON क्या है और Swift में इसकी ज़रूरत क्यों है?
\n\nJSON एक टेक्स्ट-आधारित फॉर्मेट है जो JavaScript सिंटैक्स पर आधारित है। इसमें "की-वैल्यू" पेयर, नेस्टेड ऑब्जेक्ट और ऐरे होते हैं। iOS डेवलपमेंट में JSON का उपयोग इनके लिए किया जाता है:
\n\n- \n
- REST API सर्वर से डेटा प्राप्त करना \n
- एप्लिकेशन की कॉन्फ़िगरेशन और सेटिंग्स को सेव करना \n
- एप्लिकेशन के मॉड्यूल के बीच डेटा एक्सचेंज करना \n
- डेटाबेस (जैसे Firebase या CoreData + JSON) के साथ काम करना \n
Swift में JSON के साथ काम करने के दो मुख्य तरीके हैं: पुराना तरीका JSONSerialization (Foundation से) और आधुनिक तरीका Codable, Encodable और Decodable प्रोटोकॉल के साथ। हम पहले आसान JSONSerialization से शुरू करेंगे ताकि मैकेनिज़्म समझ में आए, फिर पावरफुल Codable पर जाएंगे।
JSONSerialization (Foundation) के साथ JSON पार्सिंग
\n\nJSONSerialization Foundation में बिल्ट-इन क्लास है जो JSON डेटा को Swift ऑब्जेक्ट (डिक्शनरी और ऐरे) में बदलता है। यह तरीका Swift के शुरुआती वर्ज़न से मौजूद है और अभी भी लीगेसी प्रोजेक्ट्स में उपयोग होता है। आइए एक उदाहरण देखें।
मान लीजिए हमारे पास एक यूज़र की जानकारी वाली JSON स्ट्रिंग है:
\n\nlet jsonString = """\n{\n "name": "राहुल",\n "age": 30,\n "email": "rahul@example.com",\n "isActive": true,\n "hobbies": ["पढ़ना", "प्रोग्रामिंग", "खेल"]\n}\n"""\n\nइस JSON को पार्स करने के लिए, पहले स्ट्रिंग को Data में बदलें, फिर JSONSerialization का उपयोग करें:
import Foundation\n\nif let jsonData = jsonString.data(using: .utf8) {\n do {\n if let dictionary = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any] {\n print("नाम: \\(dictionary["name"] ?? "डेटा नहीं")")\n print("उम्र: \\(dictionary["age"] ?? "डेटा नहीं")")\n if let hobbies = dictionary["hobbies"] as? [String] {\n print("शौक: \\(hobbies.joined(separator: ", "))")\n }\n }\n } catch {\n print("JSON पार्सिंग में त्रुटि: \\(error.localizedDescription)")\n }\n}\n\nमहत्वपूर्ण बिंदु:
\n- \n
- हमेशा
try-catchका उपयोग करें — पार्सिंग में त्रुटि हो सकती है। \n - परिणाम
Anyके रूप में आता है, इसलिए इसे विशिष्ट टाइप ([String: Any]ऑब्जेक्ट के लिए,[Any]ऐरे के लिए) में कास्ट करना ज़रूरी है। \n - ऑप्शन
.mutableContainersऔर.fragmentsAllowedपार्सिंग की लचीलापन को नियंत्रित करते हैं। \n
आधुनिक तरीका: Codable प्रोटोकॉल
\n\nSwift 4 से शुरू करके, Apple ने Codable प्रोटोकॉल पेश किया (जो Encodable और Decodable को जोड़ता है)। यह असली "जादू" है — बस एक स्ट्रक्चर घोषित करें, और Swift अपने आप जानता है कि डेटा को कैसे पार्स और सीरियलाइज़ करना है। आइए पिछले उदाहरण को Codable के साथ फिर से लिखें।
1. डेटा मॉडल घोषित करना
\n\nstruct User: Codable {\n let name: String\n let age: Int\n let email: String\n let isActive: Bool\n let hobbies: [String]\n}\n\nध्यान दें: स्ट्रक्चर में फ़ील्ड के नाम JSON कीज़ से मेल खाने चाहिए (केस सेंसिटिव)। अगर कीज़ अलग हैं (जैसे snake_case), तो CodingKeys का उपयोग करें।