Swift (iOS/macOS) में JSON प्रोसेसिंग: संपूर्ण गाइड
JSON (JavaScript Object Notation) आधुनिक iOS/macOS अनुप्रयोगों में डेटा आदान-प्रदान का मुख्य प्रारूप है। Swift, अंतर्निहित Codable प्रोटोकॉल से लेकर पार्सिंग और सीरियलाइज़ेशन को सरल बनाने वाली तृतीय-पक्ष लाइब्रेरी तक, JSON के साथ काम करने के लिए उपकरणों का एक शक्तिशाली सेट प्रदान करता है। इस लेख में, हम Apple प्लेटफ़ॉर्म के लिए Swift में JSON प्रोसेसिंग के सभी मुख्य तरीकों पर विस्तार से चर्चा करेंगे।
अंतर्निहित JSON समर्थन: Codable (Swift 4+)
Swift 4 से शुरू करते हुए, Apple ने Codable प्रोटोकॉल (जो Encodable और Decodable को जोड़ता है) पेश किया, जो बिना boilerplate कोड लिखे कस्टम डेटा प्रकारों को JSON में और वापस स्वचालित रूप से परिवर्तित करने की अनुमति देता है।
JSON डिकोडिंग का मूल उदाहरण
import Foundation
// 1. डेटा मॉडल परिभाषित करेंstruct User: Codable { let id: Int let name: String let email: String let isActive: Bool}
// 2. JSON-स्ट्रिंगlet jsonString = """{ "id": 1, "name": "इवान पेट्रोव", "email": "ivan@example.com", "isActive": true}"""
// 3. डिकोड करेंif let jsonData = jsonString.data(using: .utf8) { let decoder = JSONDecoder() do { let user = try decoder.decode(User.self, from: jsonData) print("उपयोगकर्ता: \\(user.name), ईमेल: \\(user.email)") } catch { print("डिकोडिंग त्रुटि: \\(error.localizedDescription)") }}ऑब्जेक्ट को JSON में एनकोड करना
let newUser = User(id: 2, name: "मारिया सिदोरोवा", email: "maria@example.com", isActive: false)
let encoder = JSONEncoder()encoder.outputFormatting = .prettyPrinted // पठनीय आउटपुट के लिए
do { let jsonData = try encoder.encode(newUser) if let jsonString = String(data: jsonData, encoding: .utf8) { print(jsonString) }} catch { print("एनकोडिंग त्रुटि: \\(error)")}snake_case में कुंजियों के साथ काम करना और कस्टम रणनीतियाँ
अक्सर JSON snake_case शैली (जैसे, first_name) में कुंजियों के साथ आता है, जबकि Swift गुण camelCase (firstName) में लिखे जाते हैं। इसे एक पंक्ति से हल किया जाता है:
decoder.keyDecodingStrategy = .convertFromSnakeCaseencoder.keyEncodingStrategy = .convertToSnakeCaseJSONSerialization — निम्न-स्तरीय कार्य
उन मामलों के लिए जहां JSON संरचना पहले से ज्ञात नहीं है या लचीलेपन की आवश्यकता है, Foundation से JSONSerialization का उपयोग किया जाता है:
if let jsonData = jsonString.data(using: .utf8) { do { if let jsonDict = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any] { let name = jsonDict["name"] as? String ?? "" let age = jsonDict["age"] as? Int ?? 0 print("नाम: \\(name), आयु: \\(age)") } } catch { print("त्रुटि: \\(error)") }}यह विधि Any लौटाती है, इसलिए टाइप कास्टिंग आवश्यक है। यह गतिशील डेटा के लिए उपयुक्त है, लेकिन टाइप के मामले में कम सुरक्षित है।
तृतीय-पक्ष लाइब्रेरी
अंतर्निहित साधनों की शक्ति के बावजूद, Swift में JSON के साथ काम को सरल बनाने वाली लोकप्रिय लाइब्रेरी मौजूद हैं:
1. SwiftyJSON
सबसे लोकप्रिय लाइब्रेरी में से एक। यह सबस्क्रिप्ट के माध्यम से JSON तत्वों तक पहुँचने और वैकल्पिक मानों को स्वचालित रूप से संभालने की अनुमति देता है।
// Swift Package Manager के माध्यम से स्थापना: https://github.com/SwiftyJSON/SwiftyJSONimport SwiftyJSON
let json = JSON(parseJSON: jsonString)let userName = json["name"].stringValuelet userEmail = json["email"].string ?? "निर्दिष्ट नहीं"print("नाम: \\(userName), ईमेल: \\(userEmail)")
// नेस्टेड ऑब्जेक्ट के साथ काम करनाlet address = json["address"]["city"].stringValue2. ObjectMapper
JSON को ऑब्जेक्ट में और वापस मैप करने के लिए लाइब्रेरी। इसके लिए आवश्यक है r