JSON का मतलब जावास्क्रिप्ट ऑब्जेक्ट नोटेशन है। अधिकांश एपीआई या किसी अन्य सेवाओं के साथ काम करते समय डेटा JSON प्रारूप में वापस कर दिया जाता है और हमें इसे प्रयोग करने योग्य और सहायक भाषा प्रारूपों में बदलने की आवश्यकता होती है।
आईओएस का फाउंडेशन फ्रेमवर्क जेएसओएन को डिक्शनरी, स्ट्रिंग्स, बूल इत्यादि जैसे समर्थित प्रारूपों में कनवर्ट करने के लिए एक वर्ग JSONSerialization प्रदान करता है।
JSONSerialization वर्ग एक विधि प्रदान करता है jsonObject(with:options:) जो json को पार्स करता है और परिणाम के रूप में Any देता है, और यदि डेटा को पार्स नहीं किया जा सकता है तो एक त्रुटि।
// Example JSON: /* { "age": 42.0, "name": { "firstName": “tut” } } */
आइए इसे एक अन्य उदाहरण की मदद से देखें, मान लीजिए कि हमें अपने एपीआई कॉल से डेटा मिला है, अब इस डेटा को पार्स करने के लिए हम JSONSerialization का उपयोग करेंगे। jsonObject(साथ:विकल्प:)
if let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] { }
// अब उपरोक्त जेसन ऑब्जेक्ट में स्ट्रिंग और किसी के शब्दकोश के रूप में प्राप्त डेटा शामिल है, या यह बाहर चला जाता है अगर इसे और ब्लॉक करने दें
// मान लीजिए कि जोंस में एक कुंजी "छात्र" है और उससे जुड़ा मूल्य एक शब्दकोश है
guard let student = json[“Student”] as? [String: Any] else { return }
इस प्रकार हम जेसन को पार्स कर सकते हैं और इससे मूल्य प्राप्त कर सकते हैं। हम मॉडल और इनिशियलाइज़र का उपयोग करके इसे और बढ़ा सकते हैं। आइए एक स्थानीय json फ़ाइल बनाकर और फिर उसे पार्स करने का प्रयास करके इसका एक उदाहरण देखें।
आइए निम्नलिखित डेटा के साथ एक json फ़ाइल बनाएं और इसे एक्सरसाइज के रूप में सहेजें।json
{ "Warmup": { "Exercises": [ { "Name": "Neck Strech", "images": [ "http:sdf.com", "sdf", "sdf", "sdf" ], "time": 30 } ] } }
हम अब इस स्थानीय जोंस को पार्स करेंगे और निम्नलिखित कोड का उपयोग करके परिणाम प्रिंट करेंगे -
if let filePath = Bundle.main.path(forResource: "exerciseData", ofType: "json") { do { let data = try Data(contentsOf: URL(fileURLWithPath: filePath), options: .mappedIfSafe) let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) if let exercises = jsonResult as? [String:AnyObject] { if let warmups = exercises["Warmup"] as? [String:AnyObject] { print(warmups) } } } catch { print(error.localizedDescription) } }
जब हम इस कोड को चलाते हैं, तो हमें जो आउटपुट मिलता है, वह नीचे होता है।