JSON का मतलब जावास्क्रिप्ट ऑब्जेक्ट नोटेशन है। API या किसी अन्य सेवा के साथ काम करते समय ज्यादातर डेटा JSON फॉर्मेट में लौटाया जाता है और हमें इसे उपयोग योग्य और समर्थित भाषा फॉर्मेट में बदलने की आवश्यकता होती है।
iOS का फाउंडेशन फ्रेमवर्क JSON को डिक्शनरी, स्ट्रिंग्स, बूल आदि जैसे समर्थित फॉर्मेट में बदलने के लिए JSONSerialization क्लास प्रदान करता है।
JSONSerialization क्लास एक मेथड jsonObject(with:options:) प्रदान करती है जो JSON को पार्स करती है और परिणाम के रूप में Any लौटाती है, और यदि डेटा पार्स नहीं किया जा सकता है तो एक त्रुटि।
उदाहरण JSON
// Example JSON:
/* {
"age": 42.0,
"name": {
"firstName": "tut"
}
} */
API कॉल से डेटा पार्स करना
if let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
// अब उपरोक्त json ऑब्जेक्ट प्राप्त डेटा को String और Any के डिक्शनरी के रूप में रखता है
}
मान लें json में एक कुंजी "Student" है और उससे जुड़ा मान एक डिक्शनरी है:
guard let student = json["Student"] as? [String: Any] else { return }
इस तरह हम JSON को पार्स कर सकते हैं और उससे मान प्राप्त कर सकते हैं। हम मॉडल और इनिशियलाइज़र का उपयोग करके इसे और बढ़ा सकते हैं। आइए एक स्थानीय JSON फ़ाइल बनाकर और फिर उसे पार्स करने का प्रयास करके इसका एक उदाहरण देखें।
स्थानीय JSON फ़ाइल पार्स करना
निम्नलिखित डेटा के साथ एक JSON फ़ाइल बनाएं और इसे exercises.json के रूप में सहेजें:
{
"Warmup": {
"Exercises": [
{
"Name": "Neck Strech",
"images": [
"http:sdf.com",
"sdf",
"sdf",
"sdf"
],
"time": 30
}
]
}
}
अब हम इस स्थानीय JSON को पार्स करेंगे और निम्नलिखित कोड का उपयोग करके परिणाम प्रिंट करेंगे:
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)
}
}