Swift (iOS/macOS) में JSON प्रोसेसिंग: बुनियादी से उन्नत उपयोग तक
\n\nJSON (JavaScript Object Notation) मोबाइल और डेस्कटॉप डेवलपमेंट में डेटा आदान-प्रदान के सबसे लोकप्रिय प्रारूपों में से एक है। Swift (iOS/macOS) इकोसिस्टम में, JSON के साथ काम करना मूल रूप से और सुंदर ढंग से लागू किया गया है, जो Codable प्रोटोकॉल (Swift 4+) से शुरू होकर Foundation के निम्न-स्तरीय JSONSerialization तक है। इस लेख में, हम सभी प्रमुख दृष्टिकोणों पर चर्चा करेंगे, कोड उदाहरण दिखाएंगे, और शैक्षिक वेबसाइट pythonlib.ru के लिए व्यावहारिक सुझाव देंगे।
1. मूल बातें: Codable प्रोटोकॉल
\n\nCodable प्रोटोकॉल Encodable और Decodable का संयोजन है। यह आपकी संरचनाओं और क्लासेस को JSON में और वापस बदलने के लिए स्वचालित रूप से कोड उत्पन्न करता है। आधुनिक Swift में JSON के साथ काम करने का यह मुख्य और अनुशंसित तरीका है।
1.1. सरल डेटा मॉडल
\n\nimport Foundation\n\nstruct User: Codable {\n let id: Int\n let name: String\n let email: String\n let isActive: Bool\n}\n\n// JSON स्ट्रिंग का उदाहरण\nlet jsonString = """\n{\n "id": 1,\n "name": "इवान पेत्रोव",\n "email": "ivan@example.com",\n "isActive": true\n}\n"""\n\n// डिकोडिंग\nif let jsonData = jsonString.data(using: .utf8) {\n let decoder = JSONDecoder()\n if let user = try? decoder.decode(User.self, from: jsonData) {\n print("उपयोगकर्ता: \\(user.name), ईमेल: \\(user.email)")\n }\n}\n\n\n1.2. कस्टम कुंजियाँ (CodingKeys)
\n\nयदि JSON में कुंजियाँ मॉडल के गुणों से भिन्न हैं (उदाहरण के लिए, JSON में snake_case, Swift में camelCase), तो CodingKeys एनुम का उपयोग करें:
struct Product: Codable {\n let productId: Int\n let productName: String\n let price: Double\n\n enum CodingKeys: String, CodingKey {\n case productId = "product_id"\n case productName = "product_name"\n case price\n }\n}\n\nlet jsonProduct = """\n{\n "product_id": 101,\n "product_name": "MacBook Pro",\n "price": 2499.99\n}\n"""\n\n\n2. ऐरे और नेस्टेड ऑब्जेक्ट्स के साथ काम करना
\n\nJSON में अक्सर ऑब्जेक्ट्स के ऐरे या नेस्टेड संरचनाएँ होती हैं। Codable इसे आसानी से संभालता है:
struct Author: Codable {\n let name: String\n let books: [Book]\n}\n\nstruct Book: Codable {\n let title: String\n let year: Int\n}\n\nlet jsonLibrary = """\n{\n "name": "जे.के. राउलिंग",\n "books": [\n {"title": "हैरी पॉटर और पारस पत्थर", "year": 1997},\n {"title": "हैरी पॉटर और रहस्यमयी तहखाना", "year": 1998}\n ]\n}\n"""\n\nif let data = jsonLibrary.data(using: .utf8) {\n let author = try? JSONDecoder().decode(Author.self, from: data)\n print("लेखक: \\(author?.name ?? ""), पुस्तकें: \\(author?.books.count ?? 0)")\n}\n\n\n3. JSONSerialization — निम्न-स्तरीय दृष्टिकोण
\n\nहालाँकि Codable पसंदीदा तरीका है, कभी-कभी गतिशील या असंरचित डेटा के साथ काम करने की आवश्यकता होती है। ऐसे मामलों में, Foundation से JSONSerialization का उपयोग करें:
let jsonString = """\n{\n "status": "success",\n "data": {\n "temperature": 22.5,\n "humidity": 65,\n "city": "मॉस्को"\n }\n}\n"""\n\nif let data = jsonString.data(using: .utf8) {\n do {\n if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {\n if let status = json["status"] as? String {\n print("स्थिति: \\(status)")\n }\n if let dataDict = json["data"] as? [String: Any],\n let temp = dataDict["temperature"] as? Double {\n print("तापमान: \\(temp)°C")\n }\n }\n } catch {\n print("JSON पार्सिंग त्रुटि: \\(error.localizedDescription)")\n }\n}\n\n\n4. त्रुटि प्रबंधन और वैकल्पिक मान
\n\nवास्तविक JSON डेटा
पुस्तकालय में भी
C# (.NET) में XML के साथ कार्य: पार्सिंग और निर्माण के लिए संपूर्ण मार्गदर्शिका
Kotlin में प्रमाणीकरण और अधिकार: JWT, Spring Security और Ktor
Node.js पर CLI टूल बनाना: Commander, Yargs और Inquirer फ्रेमवर्क का अवलोकन
Timber Kotlin: पूरी गाइड उदाहरणों के साथ