Gson ব্যবহার করে Complex JSON Structure হ্যান্ডল করা সম্ভব। Complex JSON-এর মধ্যে বিভিন্ন ধরনের nested objects, arrays, এবং dynamic data থাকতে পারে। Gson সহজেই এই ধরনের JSON ডেটা হ্যান্ডল করতে পারে, তবে এর জন্য কিছু কাস্টমাইজড ক্লাস এবং কাস্টম সিরিয়ালাইজেশন/ডিজিরিয়ালাইজেশন কৌশল প্রয়োজন হতে পারে।
আমরা এখানে কয়েকটি উদাহরণ দিয়ে দেখাবো কীভাবে Gson ব্যবহার করে Complex JSON Structure হ্যান্ডল করা যায়।
১. JSON Structure: Nested Objects এবং Arrays
যেমন Complex JSON:
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York"
},
"phoneNumbers": [
{
"type": "home",
"number": "123-456-7890"
},
{
"type": "mobile",
"number": "987-654-3210"
}
]
}
Java Classes:
import java.util.List;
public class PhoneNumber {
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;
}
}
public class Address {
private String street;
private String city;
// 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 class Person {
private String name;
private int age;
private Address address;
private List<PhoneNumber> phoneNumbers;
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public List<PhoneNumber> getPhoneNumbers() {
return phoneNumbers;
}
public void setPhoneNumbers(List<PhoneNumber> phoneNumbers) {
this.phoneNumbers = phoneNumbers;
}
}
Gson ব্যবহার করে Complex JSON থেকে Object তৈরি করা:
import com.google.gson.Gson;
import java.util.List;
public class Main {
public static void main(String[] args) {
// Complex JSON String
String json = "{"
+ "\"name\":\"John\","
+ "\"age\":30,"
+ "\"address\":{"
+ "\"street\":\"123 Main St\","
+ "\"city\":\"New York\""
+ "},"
+ "\"phoneNumbers\":["
+ "{"
+ "\"type\":\"home\","
+ "\"number\":\"123-456-7890\""
+ "},"
+ "{"
+ "\"type\":\"mobile\","
+ "\"number\":\"987-654-3210\""
+ "}]"
+ "}";
// Gson Object
Gson gson = new Gson();
// JSON String কে Java Object এ রূপান্তর
Person person = gson.fromJson(json, Person.class);
// Output the object data
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
System.out.println("Street: " + person.getAddress().getStreet());
System.out.println("City: " + person.getAddress().getCity());
// Loop through phoneNumbers
List<PhoneNumber> phoneNumbers = person.getPhoneNumbers();
for (PhoneNumber phoneNumber : phoneNumbers) {
System.out.println("Phone (" + phoneNumber.getType() + "): " + phoneNumber.getNumber());
}
}
}
Output:
Name: John
Age: 30
Street: 123 Main St
City: New York
Phone (home): 123-456-7890
Phone (mobile): 987-654-3210
এখানে, phoneNumbers একটি List হিসেবে তৈরি করা হয়েছে এবং address একটি nested object হিসেবে কাজ করেছে।
২. JSON Structure: Dynamic Keys
যতটুকু দেখা যাচ্ছে, কখনও কখনও JSON ডেটাতে dynamic বা পরিবর্তনশীল কীগুলি থাকতে পারে। Gson এর মাধ্যমে আপনি এই ধরনের JSON হ্যান্ডল করতে পারেন, তবে আপনাকে কিছু কাস্টম ডিজিরিয়ালাইজার তৈরি করতে হতে পারে।
যেমন JSON:
{
"id": 1,
"data": {
"name": "John",
"age": 30
},
"extraInfo": {
"hobbies": ["reading", "traveling"],
"isActive": true
}
}
Java Classes:
import java.util.Map;
public class DynamicJsonExample {
private int id;
private Map<String, Object> data;
private Map<String, Object> extraInfo;
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Map<String, Object> getData() {
return data;
}
public void setData(Map<String, Object> data) {
this.data = data;
}
public Map<String, Object> getExtraInfo() {
return extraInfo;
}
public void setExtraInfo(Map<String, Object> extraInfo) {
this.extraInfo = extraInfo;
}
}
Gson ব্যবহার করে Dynamic JSON থেকে Object তৈরি করা:
import com.google.gson.Gson;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// JSON String with dynamic keys
String json = "{"
+ "\"id\":1,"
+ "\"data\":{"
+ "\"name\":\"John\","
+ "\"age\":30"
+ "},"
+ "\"extraInfo\":{"
+ "\"hobbies\":[\"reading\",\"traveling\"],"
+ "\"isActive\":true"
+ "}"
+ "}";
// Gson Object
Gson gson = new Gson();
// JSON String কে Java Object এ রূপান্তর
DynamicJsonExample example = gson.fromJson(json, DynamicJsonExample.class);
// Output the object data
System.out.println("ID: " + example.getId());
// Access data dynamically
Map<String, Object> data = example.getData();
System.out.println("Name: " + data.get("name"));
System.out.println("Age: " + data.get("age"));
// Access extraInfo dynamically
Map<String, Object> extraInfo = example.getExtraInfo();
System.out.println("Hobbies: " + extraInfo.get("hobbies"));
System.out.println("Is Active: " + extraInfo.get("isActive"));
}
}
Output:
ID: 1
Name: John
Age: 30
Hobbies: [reading, traveling]
Is Active: true
এখানে, data এবং extraInfo মানগুলির জন্য Map ব্যবহার করা হয়েছে, যাতে আপনি JSON এর ডাইনামিক কীগুলির মধ্যে যেকোনো তথ্য অ্যাক্সেস করতে পারেন।
Gson দিয়ে Complex JSON Structures হ্যান্ডল করা খুবই সহজ এবং নমনীয়। এর মাধ্যমে আপনি:
- Nested objects এবং arrays সহজে ম্যানেজ করতে পারেন।
- Dynamic JSON keys এর মাধ্যমে ডেটার মধ্যে পরিবর্তনশীল তথ্য গ্রহণ করতে পারেন।
- কাস্টম সিরিয়ালাইজেশন এবং ডিজিরিয়ালাইজেশন কৌশল প্রয়োগ করে আরও উন্নত হ্যান্ডলিং সম্ভব।
Gson খুবই লাইটওয়েট এবং কার্যকরী, যা আপনাকে জটিল JSON স্ট্রাকচারকে সহজে পার্স এবং প্রক্রিয়া করতে সহায়তা করে।
Read more