Swift में JSON प्रोसेसिंग (iOS/macOS): पूर्ण गाइड
JSON (JavaScript Object Notation) आधुनिक अनुप्रयोगों में डेटा आदान-प्रदान के सबसे लोकप्रिय प्रारूपों में से एक है। Apple इकोसिस्टम (iOS, macOS, watchOS, tvOS) में, Swift JSON के साथ काम करने के लिए कई शक्तिशाली तरीके प्रदान करता है। इस लेख में, हम तीन मुख्य दृष्टिकोणों पर चर्चा करेंगे: नेटिव Codable, निम्न-स्तरीय JSONSerialization और लोकप्रिय तृतीय-पक्ष लाइब्रेरी SwiftyJSON। आप कोड उदाहरणों के साथ Swift में JSON को पार्स करना, बनाना और प्रोसेस करना सीखेंगे।
1. Codable — Swift का आधुनिक मानक
Swift 4 से शुरू करके, Apple ने Codable प्रोटोकॉल (जो Encodable और Decodable को जोड़ता है) पेश किया। यह JSON के साथ काम करने का सबसे सुविधाजनक और टाइप-सुरक्षित तरीका है। आपको बस एक स्ट्रक्चर या क्लास घोषित करनी होगी जो Codable के अनुरूप हो, और JSONEncoder/JSONDecoder का उपयोग करना होगा।
उदाहरण: API प्रतिक्रिया से JSON पार्स करना
import Foundation
// एक मॉडल परिभाषित करें जो स्वचालित रूप से Codable के अनुरूप होstruct User: Codable { let id: Int let name: String let email: String let isActive: Bool}
// एक उदाहरण JSON स्ट्रिंगlet jsonString = """{ "id": 42, "name": "Иван Петров", "email": "ivan@example.com", "isActive": true}"""
// पार्सिंग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 user = User(id: 1, name: "Анна Смирнова", email: "anna@test.com", isActive: false)let encoder = JSONEncoder()encoder.outputFormatting = .prettyPrinted // सुंदर फ़ॉर्मेटिंग के लिए
if let jsonData = try? encoder.encode(user), let jsonString = String(data: jsonData, encoding: .utf8) { print(jsonString)}नेस्टेड स्ट्रक्चर और ऐरे के साथ काम करना
struct Company: Codable { let name: String let employees: [User]}
let companyJson = """{ "name": "TechCorp", "employees": [ {"id": 1, "name": "Олег", "email": "oleg@tc.com", "isActive": true}, {"id": 2, "name": "Мария", "email": "maria@tc.com", "isActive": false} ]}"""
if let data = companyJson.data(using: .utf8), let company = try? JSONDecoder().decode(Company.self, from: data) { print("कंपनी: \\(company.name), कर्मचारी: \\(company.employees.count)")}2. JSONSerialization — क्लासिक दृष्टिकोण (Foundation)
Codable के आगमन से पहले, मुख्य उपकरण Foundation का JSONSerialization था। यह Foundation डिक्शनरी और ऐरे ([String: Any] और [Any]) के साथ काम करता है। यह विधि तब उपयोगी होती है जब JSON संरचना पहले से ज्ञात नहीं होती या अत्यधिक गतिशील होती है।
उदाहरण: JSONSerialization के साथ पार्सिंग
if let data = jsonString.data(using: .utf8) { do { if let dict = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] { let id = dict["id"] as? Int ?? 0 let name = dict["name"] as? String ?? "अज्ञात" print("ID: \\(id), नाम: \\(name)") } } catch { print("त्रुटि: \\(error)") }}कमी: टाइप-सुरक्षा का अभाव — प्रकारों को मैन्युअल रूप से कास्ट करना पड़ता है, जिससे रनटाइम त्रुटियाँ हो सकती हैं। जहाँ संभव हो, Codable का उपयोग करने की अनुशंसा की जाती है।
3. SwiftyJSON — सुविधाजनक तृतीय-पक्ष लाइब्रेरी
SwiftyJSON एक लोकप्रिय ओपन-सोर्स लाइब्रेरी है जो JSON हैंडलिंग को और भी आसान बनाती है। यह एक सरल सिंटैक्स प्रदान करती है और अनिवार्य रूप से टाइप कास्टिंग की आवश्यकता को समाप्त करती है।