JSON ডেটা পার্স করার সময় কিছু সমস্যা বা ত্রুটি (error) হতে পারে, যেমন অবৈধ JSON ফরম্যাট বা অনুপস্থিত কীগুলোর জন্য অ্যাক্সেস চাওয়া। এ ধরনের ত্রুটির জন্য JSONException একটি সাধারণ এক্সসেপশন, যা JSON লাইব্রেরি (যেমন Org.JSON) দ্বারা উত্তোলিত হয়। JSONException এর মাধ্যমে আমরা JSON ডেটা পার্স করার সময় 발생 করা ত্রুটিগুলো সঠিকভাবে হ্যান্ডেল করতে পারি।
এই টিউটোরিয়ালে, Org.JSON লাইব্রেরি ব্যবহার করে JSONException হ্যান্ডলিংয়ের কিছু উদাহরণ দেখানো হবে।
১. JSONException হ্যান্ডলিংয়ের মৌলিক ধারণা
Org.JSON লাইব্রেরি ব্যবহার করে যখন আমরা JSON ডেটা পার্স করি, তখন কিছু সাধারণ ত্রুটি হতে পারে:
- অবৈধ JSON স্ট্রিং: যদি JSON স্ট্রিং সঠিকভাবে ফরম্যাট না করা হয়, তবে একটি JSONException উঠতে পারে।
- কী-র অনুপস্থিতি: যদি কোনো JSON অবজেক্টে একটি নির্দিষ্ট কী না থাকে, তবে সেই কীর জন্য অ্যাক্সেস করলে JSONException উঠতে পারে।
২. JSONException হ্যান্ডলিংয়ের উদাহরণ
উদাহরণ ১: অবৈধ JSON স্ট্রিং পার্সিং
যখন একটি অবৈধ JSON স্ট্রিং পার্স করার চেষ্টা করা হয়, তখন JSONException হ্যান্ডল করা প্রয়োজন।
import org.json.JSONException;
import org.json.JSONObject;
public class JSONExceptionHandlingExample {
public static void main(String[] args) {
// অবৈধ JSON স্ট্রিং (উদ্ধৃতি ভুলভাবে বন্ধ)
String jsonString = "{\"name\":\"Alice\",\"age\":30,}";
try {
// JSON স্ট্রিং পার্স করার চেষ্টা
JSONObject jsonObject = new JSONObject(jsonString);
} catch (JSONException e) {
// JSONException হ্যান্ডলিং
System.out.println("JSONException occurred: " + e.getMessage());
}
}
}
কোড ব্যাখ্যা
- JSONException: যখন JSON স্ট্রিং সঠিকভাবে ফরম্যাট করা হয় না, তখন
JSONExceptionউঠবে। এখানেjsonStringএকটি অবৈধ JSON স্ট্রিং, কারণ এর মধ্যে একটি অতিরিক্ত কমা (,) রয়েছে। - try-catch block: JSON স্ট্রিং পার্স করার জন্য একটি
try-catchব্লক ব্যবহার করা হয়েছে, যেখানেJSONExceptionক্যাচ করা হয় এবং তার মেসেজ প্রিন্ট করা হয়।
আউটপুট:
JSONException occurred: A JSONObject text must begin with '{' at 1 [character 2 line 1]
এখানে, অবৈধ JSON স্ট্রিংয়ের কারণে JSONException উঠেছে এবং এর ব্যাখ্যা মেসেজ প্রিন্ট করা হয়েছে।
উদাহরণ ২: অনুপস্থিত কী অ্যাক্সেস
এখন দেখবো কিভাবে JSONException হ্যান্ডলিং করতে হয় যখন আমরা একটি অনুপস্থিত কী অ্যাক্সেস করার চেষ্টা করি।
import org.json.JSONException;
import org.json.JSONObject;
public class JSONExceptionHandlingExample {
public static void main(String[] args) {
// JSON স্ট্রিং
String jsonString = "{\"name\":\"Bob\",\"age\":25}";
try {
// JSON স্ট্রিং পার্স করা
JSONObject jsonObject = new JSONObject(jsonString);
// "address" কী থেকে মান এক্সট্র্যাক্ট করার চেষ্টা
String address = jsonObject.getString("address"); // "address" কী নেই
} catch (JSONException e) {
// JSONException হ্যান্ডলিং
System.out.println("JSONException occurred: " + e.getMessage());
}
}
}
কোড ব্যাখ্যা
- getString("address"): এখানে
"address"কী JSON অবজেক্টে নেই, তাই এটি একটি JSONException ঘটাবে। - JSONException:
getString()মেথড যখন কীর মান না পায়, তখনJSONExceptionথ্রো করবে। - try-catch block:
try-catchব্লক ব্যবহার করে আমরা JSONException হ্যান্ডল করতে পারি এবং এর ব্যাখ্যা দেখাতে পারি।
আউটপুট:
JSONException occurred: JSONObject[\"address\"] not found.
এখানে, "address" কী অনুপস্থিত হওয়ায় JSONException উঠে এবং এর ব্যাখ্যা মেসেজ প্রদর্শিত হয়েছে।
৩. JSONException এর আরও হ্যান্ডলিং মেথড
Org.JSON লাইব্রেরি ব্যবহার করে আরো কিছু মেথড রয়েছে যা JSONException হ্যান্ডলিংকে সহজ করে তোলে:
optString(): যদি কোনো কী না থাকে, তবে এটি একটি ডিফল্ট মান ফেরত দেয়, এবং JSONException উত্তোলন করে না।
String address = jsonObject.optString("address", "Unknown Address");optInt(): যদি কোনো কী না থাকে, তবে এটি একটি ডিফল্ট মান ফেরত দেয় (ইনটিজার)।
int age = jsonObject.optInt("age", 0);has(): এটি পরীক্ষা করে যে, একটি কী JSON অবজেক্টে রয়েছে কিনা, এবং JSONException থেকে বাঁচতে সাহায্য করে।
if (jsonObject.has("name")) { String name = jsonObject.getString("name"); } else { System.out.println("Name not found."); }
সারাংশ
JSONException হ্যান্ডলিং JSON ডেটা পার্স করার সময় খুবই গুরুত্বপূর্ণ। Org.JSON লাইব্রেরি ব্যবহার করে JSON স্ট্রিং পার্সিংয়ের সময় যদি অবৈধ ফরম্যাট বা অনুপস্থিত কীগুলোর জন্য অ্যাক্সেস করার চেষ্টা করা হয়, তবে JSONException উত্তোলিত হয়। এই ত্রুটিগুলো সঠিকভাবে হ্যান্ডল করতে try-catch ব্লক এবং বিভিন্ন opt এবং has() মেথড ব্যবহার করা যেতে পারে। এটি আপনার অ্যাপ্লিকেশনকে আরও রোবাস্ট এবং ব্যবহারকারী-বান্ধব করে তোলে।