অর্গ.জেসন (Org.Json) লাইব্রেরি Java-তে JSON ডেটা প্রসেস করার জন্য একটি জনপ্রিয় টুল। এতে আপনি সহজেই JSON অবজেক্ট তৈরি, ম্যানিপুলেট, এবং প্যার্স করতে পারেন। যখন JSON ডেটা জটিল বা নেস্টেড (Nested) হয়, তখন JSON ডেটাকে প্যার্স করা কিছুটা চ্যালেঞ্জিং হতে পারে। তবে, সঠিক পদ্ধতি অনুসরণ করলে, আপনি সহজেই নেস্টেড JSON অবজেক্টগুলি এক্সট্র্যাক্ট এবং প্যার্স করতে পারবেন।
Complex JSON Object হল এমন একটি JSON অবজেক্ট, যা একাধিক নেস্টেড অবজেক্ট এবং অ্যারে ধারণ করে। যেমন, একটি ব্যক্তি সম্পর্কে ডেটা যেখানে তার নাম, ঠিকানা, ফোন নম্বর, এবং অন্যান্য বৈশিষ্ট্য অন্তর্ভুক্ত থাকতে পারে। এই ধরনের JSON ডেটা সাধারণত API থেকে আসে এবং সেগুলি প্যার্স করা প্রয়োজন হয়।
ধরা যাক, আমাদের কাছে একটি JSON ডেটা রয়েছে, যা একটি ব্যক্তি এবং তার সম্পর্কিত ডেটা ধারণ করে। এখানে ব্যক্তি সম্পর্কে তার নাম, বয়স, ফোন নম্বর এবং ঠিকানা রয়েছে, যেটি একটি নেস্টেড অবজেক্ট।
{
"name": "John Doe",
"age": 30,
"phoneNumbers": [
"123-456-7890",
"987-654-3210"
],
"address": {
"street": "123 Main St",
"city": "New York",
"zipcode": "10001"
}
}
এই JSON ডেটাকে প্যার্স করার জন্য, JSONObject
এবং JSONArray
ক্লাস ব্যবহার করা হবে।
নেস্টেড JSON Parsing হল একটি প্রক্রিয়া যেখানে JSON অবজেক্টের মধ্যে অবস্থিত অন্য অবজেক্ট বা অ্যারে থেকে ডেটা এক্সট্র্যাক্ট করা হয়। এটি JSON ডেটাকে হায়ারার্কিকাল স্ট্রাকচারে উপস্থাপন করে এবং প্রতিটি স্তরের ডেটা প্যার্স করার জন্য সঠিক কিওয়ার্ড ব্যবহার করতে হয়।
import org.json.JSONArray;
import org.json.JSONObject;
public class NestedJsonParsing {
public static void main(String[] args) {
// JSON স্ট্রিং
String jsonString = "{"
+ "\"name\": \"John Doe\","
+ "\"age\": 30,"
+ "\"phoneNumbers\": [\"123-456-7890\", \"987-654-3210\"],"
+ "\"address\": {"
+ "\"street\": \"123 Main St\","
+ "\"city\": \"New York\","
+ "\"zipcode\": \"10001\""
+ "}"
+ "}";
// JSON স্ট্রিং থেকে JSONObject তৈরি
JSONObject jsonObject = new JSONObject(jsonString);
// JSON থেকে মান এক্সট্র্যাক্ট করা
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
// JSONArray থেকে ফোন নম্বরগুলো এক্সট্র্যাক্ট করা
JSONArray phoneNumbers = jsonObject.getJSONArray("phoneNumbers");
String phoneNumber1 = phoneNumbers.getString(0); // প্রথম ফোন নম্বর
String phoneNumber2 = phoneNumbers.getString(1); // দ্বিতীয় ফোন নম্বর
// Nested JSON Object (address) থেকে ডেটা এক্সট্র্যাক্ট করা
JSONObject address = jsonObject.getJSONObject("address");
String street = address.getString("street");
String city = address.getString("city");
String zipcode = address.getString("zipcode");
// JSON ডেটা প্রদর্শন
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Phone Numbers: " + phoneNumber1 + ", " + phoneNumber2);
System.out.println("Street: " + street);
System.out.println("City: " + city);
System.out.println("Zipcode: " + zipcode);
}
}
JSONObject
তৈরি করা হয়েছে।JSONObject
থেকে সোজা স্ট্রিং বা ইনটিজার মান এক্সট্র্যাক্ট করতে এই মেথডগুলো ব্যবহার করা হয়।address
এক্সট্র্যাক্ট করার জন্য ব্যবহার করা হয়। তারপর, getString()
মেথড দিয়ে street
, city
, এবং zipcode
এক্সট্র্যাক্ট করা হয়।নেস্টেড JSON অবজেক্ট বা অ্যারে প্যার্স করার সময়, কিছু গুরুত্বপূর্ণ পদ্ধতি রয়েছে:
address
), তখন getJSONObject()
মেথড ব্যবহার করে ঐ অবজেক্টটি এক্সট্র্যাক্ট করতে হয়।phoneNumbers
), তখন getJSONArray()
মেথড ব্যবহার করে অ্যারে এক্সট্র্যাক্ট করতে হয় এবং এরপর অ্যারের ইনডেক্স দিয়ে মানগুলো এক্সট্র্যাক্ট করতে হয়।অর্গ.জেসন (Org.Json) লাইব্রেরি Java-তে JSON ডেটা প্যার্স এবং ম্যানিপুলেশনের জন্য একটি কার্যকরী টুল। Complex JSON Objects এবং Nested JSON Parsing প্রয়োগ করার মাধ্যমে আমরা JSON ডেটার বিভিন্ন স্তরের ডেটা সহজেই এক্সট্র্যাক্ট করতে পারি। JSON ডেটা যদি অনেক লেয়ার এবং অ্যারে ধারণ করে, তবে সঠিক পদ্ধতিতে প্যার্সিং ব্যবহার করলে ডেটার সঠিক মান পাওয়া যায় এবং সহজেই এটি ম্যানিপুলেট করা যায়।
org.json
লাইব্রেরির সাহায্যে আপনি সহজেই JSON অবজেক্ট তৈরি করতে পারেন এবং সেটিতে বিভিন্ন স্তরের (nested) ডাটা রাখতে পারেন। JSON অবজেক্ট তৈরি করার সময়, আপনি স্ট্রিং, নাম্বার, অ্যারে এবং অন্য JSON অবজেক্টও অন্তর্ভুক্ত করতে পারেন, যা একটি জটিল বা complex JSON object তৈরি করতে সহায়ক।
এখানে আমরা দেখব কিভাবে একটি জটিল JSON অবজেক্ট তৈরি করা যায়, যার মধ্যে একাধিক স্তরের অবজেক্ট এবং অ্যারে থাকে।
import org.json.JSONArray;
import org.json.JSONObject;
public class ComplexJSONObjectExample {
public static void main(String[] args) {
// Outer JSON অবজেক্ট তৈরি
JSONObject outerObject = new JSONObject();
// ব্যক্তির নাম এবং বয়স
outerObject.put("name", "John Doe");
outerObject.put("age", 30);
// ঠিকানা অবজেক্ট তৈরি (Nested JSON Object)
JSONObject address = new JSONObject();
address.put("street", "123 Main St");
address.put("city", "Anytown");
address.put("zipcode", "12345");
// ঠিকানা অবজেক্ট যোগ করা outerObject তে
outerObject.put("address", address);
// ফোন নম্বরের অ্যারে তৈরি
JSONArray phoneNumbers = new JSONArray();
phoneNumbers.put("123-4567");
phoneNumbers.put("987-6543");
// ফোন নম্বর অ্যারে যোগ করা outerObject তে
outerObject.put("phoneNumbers", phoneNumbers);
// শখের অ্যারে তৈরি
JSONArray hobbies = new JSONArray();
hobbies.put("Reading");
hobbies.put("Swimming");
hobbies.put("Cycling");
// শখ অ্যারে যোগ করা outerObject তে
outerObject.put("hobbies", hobbies);
// Inner JSON অবজেক্ট তৈরি: কর্মজীবন সম্পর্কিত তথ্য
JSONObject career = new JSONObject();
career.put("jobTitle", "Software Engineer");
career.put("company", "TechCorp");
career.put("yearsOfExperience", 8);
// কর্মজীবন অবজেক্ট যোগ করা outerObject তে
outerObject.put("career", career);
// JSON অবজেক্ট প্রিন্ট করা
System.out.println(outerObject.toString(4)); // Indentation for better readability
}
}
outerObject
নামে একটি JSON অবজেক্ট তৈরি করা হয়েছে, যেখানে ব্যক্তির তথ্য যেমন নাম, বয়স, ঠিকানা, ফোন নম্বর, শখ এবং কর্মজীবন সম্পর্কিত তথ্য রাখা হবে।address
এবং career
নামক JSON অবজেক্ট দুটি তৈরি করা হয়েছে এবং এগুলি outerObject
এর মধ্যে অন্তর্ভুক্ত করা হয়েছে।outerObject
তে রাখা হয়েছে।toString(4)
মেথড ব্যবহার করা হয়েছে যাতে এটি ৪ স্পেস ইনডেন্টেশনে সুন্দরভাবে দেখায়।{
"name": "John Doe",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Anytown",
"zipcode": "12345"
},
"phoneNumbers": [
"123-4567",
"987-6543"
],
"hobbies": [
"Reading",
"Swimming",
"Cycling"
],
"career": {
"jobTitle": "Software Engineer",
"company": "TechCorp",
"yearsOfExperience": 8
}
}
outerObject
তে রাখা হয়েছে।address
এবং career
নামক দুটি JSON অবজেক্ট তৈরি করা হয়েছে যা আরো বিস্তারিত তথ্য ধারণ করছে এবং এই অবজেক্টগুলো outerObject
এর অংশ।আপনি চাইলে আরও জটিল স্ট্রাকচারও তৈরি করতে পারেন, যেমন:
import org.json.JSONArray;
import org.json.JSONObject;
public class AdvancedComplexJSONObjectExample {
public static void main(String[] args) {
// Outer JSON Object
JSONObject outerObject = new JSONObject();
outerObject.put("name", "Jane Doe");
// Orders JSON Array (Nested Objects)
JSONArray orders = new JSONArray();
JSONObject order1 = new JSONObject();
order1.put("orderID", "ORD12345");
order1.put("amount", 250.75);
// Items in order1 (JSONArray)
JSONArray items1 = new JSONArray();
items1.put("Laptop");
items1.put("Mouse");
order1.put("items", items1);
orders.put(order1);
// Second Order
JSONObject order2 = new JSONObject();
order2.put("orderID", "ORD12346");
order2.put("amount", 150.50);
// Items in order2 (JSONArray)
JSONArray items2 = new JSONArray();
items2.put("Smartphone");
items2.put("Charger");
order2.put("items", items2);
orders.put(order2);
// Adding Orders Array to Outer Object
outerObject.put("orders", orders);
// Print the Complex JSON Object
System.out.println(outerObject.toString(4)); // Indentation for readability
}
}
{
"name": "Jane Doe",
"orders": [
{
"orderID": "ORD12345",
"amount": 250.75,
"items": [
"Laptop",
"Mouse"
]
},
{
"orderID": "ORD12346",
"amount": 150.5,
"items": [
"Smartphone",
"Charger"
]
}
]
}
org.json
লাইব্রেরির মাধ্যমে আপনি সহজেই একটি complex JSON object তৈরি করতে পারেন, যা nested JSON objects এবং arrays ধারণ করতে পারে। এই পদ্ধতিটি JSON ডাটা স্ট্রাকচারকে আরও জটিল এবং উচ্চমানের করে তোলে, যেখানে বিভিন্ন ধরণের তথ্য একত্রে সংরক্ষণ করা যায়। JSON অবজেক্ট এবং অ্যারে ম্যানিপুলেট করার জন্য put()
, get()
, getJSONArray()
, getJSONObject()
ইত্যাদি মেথড ব্যবহার করে আপনি প্রয়োজনীয় ডাটা তৈরি, এক্সট্র্যাক্ট বা ম্যানিপুলেট করতে পারেন।
Nested JSON Object এবং JSONArray হল JSON ডেটা স্ট্রাকচারের এমন উপাদান যা অন্য JSON অবজেক্ট অথবা অ্যারে ধারণ করতে পারে। এটি জটিল ডেটা মডেল তৈরি করতে ব্যবহৃত হয়, যেখানে একটি অবজেক্ট বা অ্যারে অন্য একাধিক অবজেক্ট অথবা অ্যারের মধ্যে অন্তর্ভুক্ত থাকে।
এই প্রবন্ধে, আমরা দেখব কিভাবে org.json
লাইব্রেরি ব্যবহার করে Nested JSON Object এবং JSONArray ম্যানেজ করা যায়।
একটি Nested JSON Object তৈরি করা এবং সেটি থেকে ডেটা এক্সট্র্যাক্ট করার উদাহরণ:
import org.json.JSONObject;
public class NestedJSONObjectExample {
public static void main(String[] args) {
// মূল JSON অবজেক্ট তৈরি
JSONObject person = new JSONObject();
// Nested JSON অবজেক্ট তৈরি
JSONObject address = new JSONObject();
address.put("street", "123 Main St");
address.put("city", "New York");
address.put("zipcode", "10001");
// মূল অবজেক্টে Nested অবজেক্ট যোগ করা
person.put("name", "John Doe");
person.put("age", 30);
person.put("address", address);
// JSON অবজেক্টের আউটপুট
System.out.println(person.toString());
// Nested JSON Object থেকে ডেটা এক্সট্র্যাক্ট করা
String name = person.getString("name");
JSONObject nestedAddress = person.getJSONObject("address");
String street = nestedAddress.getString("street");
System.out.println("Name: " + name);
System.out.println("Street: " + street);
}
}
এখানে, person
JSON অবজেক্টে আরেকটি JSON অবজেক্ট address
আছে, যেটি street, city, এবং zipcode নামক কীগুলির মান ধারণ করে। এইভাবে আপনি একটি JSON অবজেক্টে আরেকটি অবজেক্ট যোগ করতে পারেন এবং প্রয়োজন অনুসারে ডেটা এক্সট্র্যাক্ট করতে পারেন।
এখানে একটি Nested JSONArray তৈরি করা এবং সেটি থেকে ডেটা এক্সট্র্যাক্ট করার উদাহরণ:
import org.json.JSONArray;
import org.json.JSONObject;
public class NestedJSONArrayExample {
public static void main(String[] args) {
// মূল JSONArray তৈরি
JSONArray students = new JSONArray();
// Nested JSONArray তৈরি
JSONArray courses = new JSONArray();
courses.put("Math");
courses.put("Science");
// প্রথম ছাত্রের JSON অবজেক্ট তৈরি
JSONObject student1 = new JSONObject();
student1.put("name", "John");
student1.put("age", 21);
student1.put("courses", courses);
// Nested JSONArray তে JSON অবজেক্ট যোগ করা
students.put(student1);
// JSON অ্যারের আউটপুট
System.out.println(students.toString());
// Nested JSONArray থেকে ডেটা এক্সট্র্যাক্ট করা
JSONObject firstStudent = students.getJSONObject(0);
String studentName = firstStudent.getString("name");
JSONArray studentCourses = firstStudent.getJSONArray("courses");
String firstCourse = studentCourses.getString(0);
System.out.println("Student Name: " + studentName);
System.out.println("First Course: " + firstCourse);
}
}
এখানে, students
একটি JSONArray, যার মধ্যে একটি JSON অবজেক্ট student1
রয়েছে। এই JSON অবজেক্টে একটি Nested JSONArray courses
রয়েছে, যা ছাত্রের কোর্সের তালিকা ধারণ করে।
getJSONObject()
মেথড ব্যবহার করা হয়।getJSONArray()
মেথড ব্যবহার করা হয়।getString()
, getInt()
, getJSONArray()
, getJSONObject()
মেথড ব্যবহার করে ডেটা এক্সট্র্যাক্ট করা হয়।opt()
মেথড ব্যবহার করা যেতে পারে, যা null
রিটার্ন করবে পরিবর্তে অ্যাপ্লিকেশন ক্র্যাশ হওয়ার।আপনি নতুন ডেটা JSON অবজেক্ট বা JSONArray-তে put()
মেথড দিয়ে যোগ করতে পারেন।
JSONObject obj = new JSONObject();
obj.put("name", "Jane Doe");
obj.put("age", 25);
ডেটা আপডেট করতে একই কীগুলি ব্যবহার করতে পারেন:
obj.put("age", 26); // age আপডেট করা
JSON অবজেক্ট থেকে ডেটা মুছতে remove()
মেথড ব্যবহার করা হয়:
obj.remove("name"); // "name" কীগুলি মুছে ফেলা
Nested JSON Objects এবং Nested JSONArray আপনাকে আরও জটিল ডেটা স্ট্রাকচার তৈরি এবং পরিচালনা করতে সহায়তা করে। আপনি যখন অনেক লেভেলের ডেটা মডেল তৈরি করতে চান বা ডেটা হায়ারার্কি ম্যানেজ করতে চান, তখন এই Nested JSON স্ট্রাকচারের ব্যবহার প্রয়োজনীয় হয়ে পড়ে। org.json
লাইব্রেরির সাহায্যে আপনি খুব সহজে এই ধরনের স্ট্রাকচার তৈরি এবং এক্সট্র্যাক্ট করতে পারেন।
org.json
লাইব্রেরি Java-তে JSON ডেটা প্রক্রিয়াকরণের জন্য একটি সহজ এবং শক্তিশালী টুলসেট প্রদান করে। যখন JSON ডেটা জটিল (Complex) হয়ে যায়, তখন সেটি পার্স বা এক্সট্র্যাক্ট করা একটু কঠিন হতে পারে, তবে org.json
লাইব্রেরির সাহায্যে আপনি খুব সহজেই এমন জটিল JSON ডেটা পার্স করতে পারেন।
এই টিউটোরিয়ালে, আমরা একটি জটিল JSON ডেটা ফাইল পার্স করার উদাহরণ দেখব, যা বিভিন্ন ধরনের ডেটা (অবজেক্ট, অ্যারে, স্ট্রিং, নাম্বার ইত্যাদি) ধারণ করে।
ধরা যাক, আমাদের একটি JSON ডেটা আছে, যা নিচের মতো দেখতে:
{
"employee": {
"name": "John Doe",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York",
"zipcode": "10001"
},
"skills": ["Java", "Python", "JavaScript"],
"isPermanent": true,
"salary": 75000.50
}
}
এটি একটি জটিল JSON অবজেক্ট, যার মধ্যে একটি অবজেক্ট (employee), একটি অ্যারে (skills), এবং বিভিন্ন প্রপার্টি রয়েছে। আমাদের এই JSON ডেটাটি পার্স করার জন্য org.json
লাইব্রেরি ব্যবহার করব।
import org.json.JSONArray;
import org.json.JSONObject;
public class ComplexJSONParsing {
public static void main(String[] args) {
// JSON ডেটা স্ট্রিং
String jsonString = "{"
+ "\"employee\": {"
+ "\"name\": \"John Doe\","
+ "\"age\": 30,"
+ "\"address\": {"
+ "\"street\": \"123 Main St\","
+ "\"city\": \"New York\","
+ "\"zipcode\": \"10001\""
+ "},"
+ "\"skills\": [\"Java\", \"Python\", \"JavaScript\"],"
+ "\"isPermanent\": true,"
+ "\"salary\": 75000.50"
+ "}"
+ "}";
// JSONObject তৈরি করা
JSONObject jsonObject = new JSONObject(jsonString);
// "employee" অবজেক্টে ডেটা এক্সট্র্যাক্ট করা
JSONObject employee = jsonObject.getJSONObject("employee");
// "name", "age", "isPermanent", এবং "salary" এক্সট্র্যাক্ট করা
String name = employee.getString("name");
int age = employee.getInt("age");
boolean isPermanent = employee.getBoolean("isPermanent");
double salary = employee.getDouble("salary");
// "address" অবজেক্ট থেকে ডেটা এক্সট্র্যাক্ট করা
JSONObject address = employee.getJSONObject("address");
String street = address.getString("street");
String city = address.getString("city");
String zipcode = address.getString("zipcode");
// "skills" অ্যারে থেকে ডেটা এক্সট্র্যাক্ট করা
JSONArray skills = employee.getJSONArray("skills");
String skill1 = skills.getString(0); // "Java"
String skill2 = skills.getString(1); // "Python"
String skill3 = skills.getString(2); // "JavaScript"
// এক্সট্র্যাক্ট করা ডেটা প্রিন্ট করা
System.out.println("Employee Name: " + name);
System.out.println("Age: " + age);
System.out.println("Permanent: " + isPermanent);
System.out.println("Salary: " + salary);
System.out.println("Street: " + street);
System.out.println("City: " + city);
System.out.println("Zipcode: " + zipcode);
System.out.println("Skills: " + skill1 + ", " + skill2 + ", " + skill3);
}
}
employee
অবজেক্ট ধারণ করে, যা নিজে কিছু অন্যান্য অবজেক্ট, অ্যারে এবং প্রপার্টি ধারণ করে।new JSONObject(jsonString)
এর মাধ্যমে JSON স্ট্রিং থেকে একটি JSONObject
তৈরি করা হয়েছে।getString("key")
: স্ট্রিং মান এক্সট্র্যাক্ট করার জন্য।getInt("key")
: ইন্টিজার মান এক্সট্র্যাক্ট করার জন্য।getBoolean("key")
: বুলিয়ান মান এক্সট্র্যাক্ট করার জন্য।getDouble("key")
: ডাবল নাম্বার এক্সট্র্যাক্ট করার জন্য।getJSONObject("key")
: একটি অবজেক্ট এক্সট্র্যাক্ট করার জন্য (যেমন "address")।getJSONArray("key")
: একটি অ্যারে এক্সট্র্যাক্ট করার জন্য (যেমন "skills")।getJSONArray()
মেথড ব্যবহার করে একটি অ্যারে এক্সট্র্যাক্ট করা হয়েছে এবং তার ভ্যালুগুলি ইনডেক্সের মাধ্যমে সংগ্রহ করা হয়েছে।Employee Name: John Doe
Age: 30
Permanent: true
Salary: 75000.5
Street: 123 Main St
City: New York
Zipcode: 10001
Skills: Java, Python, JavaScript
optString("key")
: optString
মেথড ব্যবহার করলে যদি কীরটি উপস্থিত না থাকে, তাহলে এটি null
রিটার্ন করবে, যা getString
মেথডের তুলনায় বেশি নিরাপদ।optJSONObject("key")
: optJSONObject
মেথড ব্যবহার করলে অবজেক্ট না পাওয়া গেলে null
রিটার্ন করবে।optJSONArray("key")
: optJSONArray
মেথড ব্যবহার করে আপনি অ্যারে বের করতে পারেন, এবং যদি অ্যারে না থাকে তাহলে এটি null
রিটার্ন করবে।org.json
লাইব্রেরি ব্যবহার করে Java-তে জটিল JSON ডেটা পার্স করা একটি সরল প্রক্রিয়া। JSONObject
, JSONArray
ক্লাসের মাধ্যমে আপনি JSON অবজেক্ট এবং অ্যারে থেকে ডেটা এক্সট্র্যাক্ট করতে পারেন। org.json
লাইব্রেরি আপনাকে JSON ডেটার বিভিন্ন অংশ যেমন স্ট্রিং, নাম্বার, অবজেক্ট, অ্যারে ইত্যাদি সহজে প্রক্রিয়াকরণ করতে সাহায্য করে।
Read more