JSON.simple লাইব্রেরি ব্যবহার করে JSON ডেটা থেকে complex এবং nested objects-এর deserialization (Java objects এ রূপান্তর) করা সম্ভব। এই প্রক্রিয়াটি সাধারণত JSON ডেটার মধ্যে থাকা nested structures (যেমন: nested JSON objects বা arrays) পার্স (parse) করে সেগুলোকে Java objects এ রূপান্তর করার জন্য ব্যবহৃত হয়।
এখানে, আমরা দেখব কিভাবে complex JSON objects এবং nested JSON objects থেকে Java objects তৈরি করা যায় JSON.simple লাইব্রেরি ব্যবহার করে।
ধাপ ১: Complex এবং Nested JSON Structure
ধরা যাক, আমাদের একটি JSON ফাইল বা স্ট্রিং আছে যা complex এবং nested JSON objects ধারণ করে। আমাদের এই JSON ডেটাকে Java objects-এ রূপান্তর করতে হবে।
Example JSON (complex nested object)
{
"id": 1,
"name": "John Doe",
"address": {
"street": "123 Main St",
"city": "New York",
"zipcode": "10001"
},
"phones": [
{"type": "home", "number": "123-4567"},
{"type": "mobile", "number": "987-6543"}
]
}
এটি একটি complex JSON যা একটি nested JSON object (address) এবং একটি JSON array (phones) ধারণ করে।
ধাপ ২: Java Classes তৈরি করা
এখন, আমাদের এই JSON ডেটার জন্য Java ক্লাস তৈরি করতে হবে।
Java Class for Address
public class Address {
private String street;
private String city;
private String zipcode;
// Getters and Setters
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
}
Java Class for Phone
public class Phone {
private String type;
private String number;
// Getters and Setters
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
Java Class for Main Object (Person)
import java.util.List;
public class Person {
private int id;
private String name;
private Address address;
private List<Phone> phones;
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public List<Phone> getPhones() {
return phones;
}
public void setPhones(List<Phone> phones) {
this.phones = phones;
}
}
এখানে, আমরা Person, Address, এবং Phone ক্লাস তৈরি করেছি যাতে JSON ডেটার বিভিন্ন অংশগুলির জন্য নির্দিষ্ট Java objects তৈরি করা যায়।
ধাপ ৩: JSON Parsing (Deserialization) এবং Complex/Nested Object Mapping
এখন আমরা JSON.simple লাইব্রেরি ব্যবহার করে JSON ডেটাকে Java objects-এ রূপান্তর (deserialization) করব।
Example: Complex JSON Parsing
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.util.ArrayList;
import java.util.List;
public class JsonDeserializationExample {
public static void main(String[] args) {
// JSON String (Complex and Nested Object)
String jsonString = "{\n" +
" \"id\": 1,\n" +
" \"name\": \"John Doe\",\n" +
" \"address\": {\n" +
" \"street\": \"123 Main St\",\n" +
" \"city\": \"New York\",\n" +
" \"zipcode\": \"10001\"\n" +
" },\n" +
" \"phones\": [\n" +
" {\"type\": \"home\", \"number\": \"123-4567\"},\n" +
" {\"type\": \"mobile\", \"number\": \"987-6543\"}\n" +
" ]\n" +
"}";
try {
// Create JSON parser
JSONParser parser = new JSONParser();
// Parse the JSON string into a JSONObject
JSONObject jsonObject = (JSONObject) parser.parse(jsonString);
// Deserialize fields from JSON
int id = ((Long) jsonObject.get("id")).intValue();
String name = (String) jsonObject.get("name");
// Deserialize the address (nested object)
JSONObject addressJson = (JSONObject) jsonObject.get("address");
Address address = new Address();
address.setStreet((String) addressJson.get("street"));
address.setCity((String) addressJson.get("city"));
address.setZipcode((String) addressJson.get("zipcode"));
// Deserialize the phones array (JSON array)
JSONArray phonesJson = (JSONArray) jsonObject.get("phones");
List<Phone> phones = new ArrayList<>();
for (Object phoneObj : phonesJson) {
JSONObject phoneJson = (JSONObject) phoneObj;
Phone phone = new Phone();
phone.setType((String) phoneJson.get("type"));
phone.setNumber((String) phoneJson.get("number"));
phones.add(phone);
}
// Create the Person object
Person person = new Person();
person.setId(id);
person.setName(name);
person.setAddress(address);
person.setPhones(phones);
// Output the deserialized object
System.out.println("Person ID: " + person.getId());
System.out.println("Name: " + person.getName());
System.out.println("Address: " + person.getAddress().getStreet() + ", " + person.getAddress().getCity() + ", " + person.getAddress().getZipcode());
for (Phone phone : person.getPhones()) {
System.out.println("Phone: " + phone.getType() + " - " + phone.getNumber());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output:
Person ID: 1
Name: John Doe
Address: 123 Main St, New York, 10001
Phone: home - 123-4567
Phone: mobile - 987-6543
ব্যাখ্যা:
- JSONParser: JSON স্ট্রিংটি JSONObject-এ পার্স (parse) করতে ব্যবহৃত হয়।
- Address এবং Phone অবজেক্ট: nested object এবং array থেকে ডেটা বের করে Address এবং Phone Java objects তৈরি করা হয়েছে।
- List: JSONArray থেকে প্রতিটি ফোন অবজেক্ট নিয়ে একটি Phone অবজেক্ট তৈরি এবং একটি লিস্টে রাখা হয়েছে।
JSON.simple লাইব্রেরি ব্যবহার করে complex এবং nested JSON objects কে Java objects-এ রূপান্তর (deserialization) করা সম্ভব। এখানে দেখানো উদাহরণগুলি আপনাকে nested JSON objects, arrays, এবং complex data structures পার্স করার প্রক্রিয়া বুঝতে সাহায্য করবে।
- JSONObject: JSON এর key-value pair ধারণ করে।
- JSONArray: একাধিক value ধারণ করে।
- Nested JSON Objects: এক JSON object এর মধ্যে অন্য JSON object থাকতে পারে।
JSON.simple লাইব্রেরি খুবই হালকা ও দ্রুত, এবং complex JSON structures হ্যান্ডল করার জন্যও কার্যকরী।
Read more