JSON মানে জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন। এপিআই বা অন্য কোনো পরিষেবার সাথে কাজ করার সময় বেশিরভাগ ডেটা JSON ফর্ম্যাটে ফেরত দেওয়া হয় এবং আমাদের এটি ব্যবহারযোগ্য এবং সমর্থনযোগ্য ভাষা ফর্ম্যাটে রূপান্তর করতে হবে।
iOS-এর ফাউন্ডেশন ফ্রেমওয়ার্ক JSON-কে সমর্থিত ফরম্যাটে যেমন অভিধান, স্ট্রিং, বুল ইত্যাদিতে রূপান্তর করতে একটি ক্লাস JSON সিরিয়ালাইজেশন প্রদান করে।
JSONSerialization ক্লাস একটি পদ্ধতি jsonObject(with:options:) প্রদান করে যা json কে পার্স করে এবং ফলাফল হিসাবে যেকোনও রিটার্ন করে এবং ডেটা পার্স করা না গেলে একটি ত্রুটি।
// Example JSON: /* { "age": 42.0, "name": { "firstName": “tut” } } */
আসুন অন্য একটি উদাহরণের সাহায্যে এটি দেখি, ধরুন আমরা আমাদের API কল থেকে ডেটা পেয়েছি, এখন এই ডেটা পার্স করতে আমরা JSONSerialization ব্যবহার করব। jsonObject(with:options:)
if let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] { }
// এখন উপরের json অবজেক্টটিতে প্রাপ্ত ডেটা স্ট্রিং এবং যেকোন একটি অভিধান হিসাবে রয়েছে, অথবা এটি অন্যকে ব্লক করলে এর বাইরে চলে যায়
// ধরুন json-এ একটি কী "ছাত্র" রয়েছে এবং এর সাথে যুক্ত মান একটি অভিধান
guard let student = json[“Student”] as? [String: Any] else { return }
এইভাবে আমরা 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) } }
যখন আমরা এই কোডটি চালাই, তখন আমরা যে আউটপুটটি পাই তা নিচে দেওয়া হল।