আইওএস এ JSON সিরিয়ালাইজেশন এর জন্য দারুণ একটা লাইব্রেরী হচ্ছে SwiftyJSON. এটি Alamofire এর সাথে দারুণ কাজ করে। আমরা দেখব কিভাবে SwiftyJSON প্রজেক্টে যুক্ত করা যায়, কিভাবে ব্যবহার করা যায়।
আমাদের প্রজেক্টে SwityJSON যুক্ত করার জন্য আমরা CocoaPods ব্যবহার করব। বিস্তারই জানা যাবে আইওএস এর dependency ম্যানেজার লেখা থেকে। একটা JSON ফাইল নেটওয়ার্ক থেকে লোড বা HTTP রিকোয়েস্ট এর জন্য আমরা Alamofire ব্যবহার করব।
এ লাইব্রেরী দুইটা আমরা আমাদের প্রজেক্টে যুক্ত করব। তার জন্য প্রথমে Xcode এ একটা iOS প্রজেক্ট তৈরি করব। এরপর টার্মিনাল থেকে ঐ প্রজেক্টের ডিরেক্ট্ররিতে যাবো। তারপর লিখব:
pod init
এ কমান্ড লিখলে আমাদের প্রজেক্টে একটা ফাইল যুক্ত হবে। Podfile নামে। এটি যে কোন টেক্সট এডিটর দিয়ে ওপেন করব। এবং Alamofire এবং SwiftyJSON যুক্ত করব নিচের মত করেঃ
pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git' pod 'Alamofire', '~> 3.3'
সম্পুর্ণ Podfile:
# Uncomment this line to define a global platform for your project platform :ios, '8.0' # Uncomment this line if you're using Swift use_frameworks! target 'SwiftyJSONdemo' do pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git' pod 'Alamofire', '~> 3.3' end target 'SwiftyJSONdemoTests' do end target 'SwiftyJSONdemoUITests' do end
এখানে SwiftyJSONdemo হচ্ছে প্রজেক্টের নাম। এটি অটো যুক্ত হবে। Podfile এডিট করার পর টার্মিনালে গিয়ে লিখবঃ
pod install
তাহলে প্রজেক্টে Alamofire এবং SwiftyJSON যুক্ত হবে। এবার SwiftyJSONdemo.xcworkspace ওপেন করব। তাহলে আমাদের যুক্ত করা লাইব্রেরী সহ প্রজেক্টটি Xcode এ ওপেন হবে। প্রজেক্টে যুক্ত করার পর এবার আমরা ব্যবহার করার জন্য প্রস্তুত। আমরা এখান থেকে সিম্পল একটা JSON ফাইল লোড করব। এবং এটির ভেতরের ডেটা গুলো SwiftyJSON এর মাধ্যমে রিড করব। JSON ফাইলটিতে নিচের ডেটা গুলো রয়েছে।
{ "firstkey": "Hellow World!", "secondkey": "Welcome to awesomeness!", "thirdkey": ["Item 1", "Item 2", "Item 3","Item 4"] }
আইওএস HTTP রিকোয়েস্ট টিউটোরিয়ালে আমরা দেখেছি কিভাবে একটি HTTP রিকোয়েস্ট করতে হয়। রেসপন্স পাওয়ার পর ঐ রেসপন্স ডেটা আমরা SwiftyJSON ব্যবহার করে নিচের মত করে রিড করতে পারিঃ
let json = JSON(value) //Printing strings from a JSON Dictionary print(json["firstkey"].stringValue)
এখানে value হচ্ছে JSON ভ্যালু, যা আমরা নেটওয়ার্ক কলের মাধ্যমে পেয়েছি। এরপর json[“firstkey”].stringValue দিয়ে JSON ডিকশনারি থেকে এর একটি ভ্যালু স্ট্রিং হিসেবে নিয়েছি। এভাবে যে কোন ভ্যালুই আমরা রিড করতে পারি। সম্পুর্ণ ViewController.swift ফাইলঃ
import UIKit import Alamofire import SwiftyJSON class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() Alamofire.request(.GET, "http://jakir.me/files/simple.json") .responseJSON { response in if let value = response.result.value { let json = JSON(value) //Printing strings from a JSON Dictionary print(json["firstkey"].stringValue) print(json["secondkey"].stringValue) print(json["thirdkey"].arrayValue) } } // End Alamofire call } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
প্রজেক্টটি রান করলে কনসোলে নিচের মত আউটপুট দিবেঃ
Hellow World! Welcome to awesomeness! [Item 1, Item 2, Item 3, Item 4]
সব কিছু ঠিক মত করার পরও যদি নিচের মত কোন এরর দেয়, তাহলে বুঝতে হবে আমাদের প্রজেক্টের Transport Security Settings ঠিক করতে হবে।
SwiftyJSONdemo[3831:11879700] App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
- Transport Security Settings সেট করা জন্য নিচের টিউটোরিয়ালটি দেখতে পারেনঃ
আইওএস এ Transport Security Settings
SwiftyJSON সম্পর্কে আরো বিস্তারিত জানা যাবে লাবিরেরীটির গিটহাব পেইজে।