Java তে JSON থেকে Object (Deserialization) করার জন্য আপনি সাধারণত Jackson বা Gson লাইব্রেরি ব্যবহার করতে পারেন। আমি নিচে দুটি জনপ্রিয় লাইব্রেরি ব্যবহার করে উদাহরণ দিচ্ছি:
1. Jackson ব্যবহার করে:
প্রথমে, Jackson লাইব্রেরি ডিপেনডেন্সি আপনার প্রকল্পে যোগ করুন (যদি আপনি Maven ব্যবহার করেন):
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.1</version>
</dependency>
এখন, JSON থেকে Java Object এ কনভার্ট (Deserialization) করার উদাহরণ:
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"John\",\"age\":30}";
ObjectMapper objectMapper = new ObjectMapper();
try {
// JSON থেকে Java Object তে রূপান্তর
Person person = objectMapper.readValue(json, Person.class);
System.out.println(person);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
// Getter and Setter methods
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;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
এখানে ObjectMapper ব্যবহার করে JSON স্ট্রিংটি Person ক্লাসের Object তে রূপান্তরিত করা হয়েছে।
2. Gson ব্যবহার করে:
প্রথমে, Gson লাইব্রেরি ডিপেনডেন্সি আপনার প্রকল্পে যোগ করুন (যদি আপনি Maven ব্যবহার করেন):
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.8</version>
</dependency>
এখন, JSON থেকে Java Object এ কনভার্ট (Deserialization) করার উদাহরণ:
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"John\",\"age\":30}";
Gson gson = new Gson();
// JSON থেকে Java Object তে রূপান্তর
Person person = gson.fromJson(json, Person.class);
System.out.println(person);
}
}
class Person {
private String name;
private int age;
// Getter and Setter methods
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;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
এখানে Gson লাইব্রেরির fromJson মেথড ব্যবহার করে JSON স্ট্রিংকে Person ক্লাসের Object তে রূপান্তরিত করা হয়েছে।
সারাংশ:
- Jackson এবং Gson উভয়ই JSON থেকে Java Object তৈরি করতে সহায়ক লাইব্রেরি।
- Jackson ব্যবহার করলে
ObjectMapperএবং Gson ব্যবহার করলেGsonক্লাসেরfromJsonমেথড ব্যবহার করতে হয়।
আপনার প্রকল্পের প্রয়োজন অনুযায়ী যেকোনো লাইব্রেরি ব্যবহার করতে পারেন।
JSON থেকে Java Object এ কনভার্ট করা (Deserialization) হল সেই প্রক্রিয়া যেখানে JSON ডেটা একটি Java অবজেক্টে রূপান্তরিত হয়। Gson লাইব্রেরি ব্যবহার করে এটি খুব সহজে করা যায়।
Gson দিয়ে JSON থেকে Java Object এ কনভার্ট করার উদাহরণ:
১. Java ক্লাস তৈরি করা:
ধরা যাক, আমাদের একটি Person ক্লাস রয়েছে, যেখানে name এবং age ফিল্ড রয়েছে।
class Person {
String name;
int age;
// Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
২. Gson লাইব্রেরি ব্যবহার করা:
এখন JSON ডেটাকে Person অবজেক্টে রূপান্তর করতে Gson ব্যবহার করা হবে।
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
// JSON ডেটা (String হিসেবে)
String json = "{\"name\":\"John\",\"age\":25}";
// Gson অবজেক্ট তৈরি করা
Gson gson = new Gson();
// JSON থেকে Java Object-এ রূপান্তর করা
Person person = gson.fromJson(json, Person.class);
// Java Object-এর ডেটা প্রিন্ট করা
System.out.println("Name: " + person.name); // Output: Name: John
System.out.println("Age: " + person.age); // Output: Age: 25
}
}
বিস্তারিত ব্যাখ্যা:
String json = "{\"name\":\"John\",\"age\":25}";: এখানে একটি JSON স্ট্রিং দেয়া হয়েছে, যা একটিPersonঅবজেক্টের ডেটা ধারণ করে।Gson gson = new Gson();: Gson অবজেক্ট তৈরি করা।Person person = gson.fromJson(json, Person.class);:fromJsonমেথড ব্যবহার করে JSON ডেটাকেPersonক্লাসের অবজেক্টে রূপান্তর করা হচ্ছে। এই মেথডে প্রথম আর্গুমেন্ট হিসেবে JSON স্ট্রিং এবং দ্বিতীয় আর্গুমেন্ট হিসেবে রূপান্তরের জন্য Java ক্লাস দেয়া হয়।- অবশেষে,
person.nameএবংperson.ageএর মান প্রিন্ট করা হচ্ছে।
আউটপুট:
Name: John
Age: 25
এভাবে আপনি JSON ডেটা থেকে Java Object-এ রূপান্তর করতে পারেন।
Gson এর fromJson() মেথড হল একটি গুরুত্বপূর্ণ মেথড যা JSON ডেটা থেকে Java অবজেক্টে রূপান্তর (Deserialization) করার জন্য ব্যবহৃত হয়। এটি JSON ফর্ম্যাটের স্ট্রিংকে নির্দিষ্ট Java ক্লাসের অবজেক্টে কনভার্ট করে।
fromJson() মেথডের সাধারণ সিনট্যাক্স:
T fromJson(String json, Class<T> classOfT)
json: JSON ডেটা যেটি String আকারে থাকে।classOfT: সেই Java ক্লাসের টাইপ যেখানে JSON ডেটা রূপান্তরিত হবে।
ব্যবহার:
১. সাধারণ উদাহরণ:
ধরা যাক, আপনার একটি Person ক্লাস রয়েছে:
class Person {
String name;
int age;
// Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
এখন, যদি JSON ডেটা থাকে:
{
"name": "John",
"age": 25
}
তাহলে, fromJson() মেথড ব্যবহার করে JSON থেকে Person অবজেক্টে রূপান্তর করতে হবে:
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
// JSON স্ট্রিং
String json = "{\"name\":\"John\",\"age\":25}";
// Gson অবজেক্ট তৈরি
Gson gson = new Gson();
// JSON থেকে Person অবজেক্টে রূপান্তর
Person person = gson.fromJson(json, Person.class);
// প্রিন্ট করা
System.out.println("Name: " + person.name); // Output: Name: John
System.out.println("Age: " + person.age); // Output: Age: 25
}
}
বিস্তারিত ব্যাখ্যা:
- JSON ডেটা:
String json = "{\"name\":\"John\",\"age\":25}";— এটি JSON ফরম্যাটের স্ট্রিং। gson.fromJson()মেথড:gson.fromJson(json, Person.class)— এখানে JSON স্ট্রিংকেPersonক্লাসের অবজেক্টে রূপান্তরিত করা হয়েছে।Person.classএPersonক্লাসের টাইপ পাস করা হয়, যা Gson জানবে যে JSON ডেটা কোন টাইপের অবজেক্টে রূপান্তরিত হবে।
আউটপুট:
Name: John
Age: 25
অতিরিক্ত উদাহরণ:
২. অন্য ধরনের ডেটা:
ধরা যাক, আপনার একটি Book ক্লাস রয়েছে, যা একটি লিস্ট অব স্ট্রিংয়ের সাথে সম্পর্কিত।
import java.util.List;
class Book {
String title;
List<String> authors;
// Constructor
public Book(String title, List<String> authors) {
this.title = title;
this.authors = authors;
}
}
এখন, একটি JSON ডেটা:
{
"title": "Effective Java",
"authors": ["Joshua Bloch", "James Gosling"]
}
এটি fromJson() ব্যবহার করে রূপান্তর করা যাবে:
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;
public class Main {
public static void main(String[] args) {
String json = "{\"title\":\"Effective Java\",\"authors\":[\"Joshua Bloch\",\"James Gosling\"]}";
// Gson অবজেক্ট তৈরি
Gson gson = new Gson();
// JSON থেকে Book অবজেক্টে রূপান্তর
Book book = gson.fromJson(json, Book.class);
// Book অবজেক্টের ডেটা প্রিন্ট করা
System.out.println("Title: " + book.title); // Output: Title: Effective Java
System.out.println("Authors: " + book.authors); // Output: Authors: [Joshua Bloch, James Gosling]
}
}
বিস্তারিত ব্যাখ্যা:
- List authors: এখানে
authorsএকটি লিস্ট, তাই Gson তা সঠিকভাবে রূপান্তর করবে। - TypeToken ব্যবহার: যদি জেনেরিক টাইপ ব্যবহৃত হয় (যেমন List), তখন
TypeTokenব্যবহার করতে হবে। তবে এখানে শুধুমাত্র একটি ক্লাস টাইপ রূপান্তর হওয়ায়, এটি সরাসরি সম্ভব।
fromJson() মেথডের অন্যান্য ব্যবহার:
৩. জেনেরিক টাইপের রূপান্তর:
যদি আপনার একটি জেনেরিক টাইপের লিস্ট বা কলেকশন থাকে, তাহলে TypeToken ব্যবহার করতে হয়। উদাহরণস্বরূপ:
String json = "[{\"name\":\"Alice\",\"age\":30},{\"name\":\"Bob\",\"age\":25}]";
Type listType = new TypeToken<List<Person>>() {}.getType();
List<Person> personList = gson.fromJson(json, listType);
এখানে TypeToken ব্যবহার করা হয়েছে একটি List<Person> রূপান্তর করতে।
fromJson() মেথডের উপকারিতা:
- JSON থেকে Java অবজেক্টে ডেটা কনভার্ট করতে সহজ।
- জেনেরিক টাইপ এবং কমপ্লেক্স অবজেক্ট স্ট্রাকচার সাপোর্ট করে।
- ব্যবহারকারীকে দ্রুত JSON ডেটা হ্যান্ডল করার সুবিধা দেয়।
Gson ব্যবহার করে Simple JSON এবং Nested JSON থেকে Java Object তৈরি করার জন্য, প্রথমে আপনাকে Gson লাইব্রেরি ইমপোর্ট করতে হবে এবং তারপর JSON ডেটাকে Java অবজেক্টে রূপান্তর করতে হবে।
১. Simple JSON থেকে Object তৈরি করা
যেমন Simple JSON:
{
"name": "John",
"age": 25
}
Java Class:
public class Person {
private String name;
private int age;
// 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;
}
}
Gson ব্যবহার করে JSON থেকে Object তৈরি করা:
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
// Simple JSON String
String json = "{\"name\":\"John\",\"age\":25}";
// 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());
}
}
Output:
Name: John
Age: 25
এখানে, gson.fromJson(json, Person.class) ব্যবহার করে JSON ডেটাকে Person অবজেক্টে রূপান্তরিত করা হয়েছে।
২. Nested JSON থেকে Object তৈরি করা
যেমন Nested JSON:
{
"name": "John",
"age": 25,
"address": {
"street": "123 Main St",
"city": "New York"
}
}
Java Classes:
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;
// 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;
}
}
Gson ব্যবহার করে Nested JSON থেকে Object তৈরি করা:
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
// Nested JSON String
String json = "{\"name\":\"John\",\"age\":25,\"address\":{\"street\":\"123 Main St\",\"city\":\"New York\"}}";
// 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());
}
}
Output:
Name: John
Age: 25
Street: 123 Main St
City: New York
এখানে, gson.fromJson(json, Person.class) JSON ডেটাকে Person অবজেক্টে রূপান্তরিত করেছে, এবং address নামক nested JSON অংশটি Address অবজেক্টে রূপান্তরিত হয়েছে।
- Gson ব্যবহার করে simple JSON এবং nested JSON থেকে Java Object তৈরি করা খুবই সহজ।
- Nested JSON এর ক্ষেত্রে, Gson আপনার নির্দিষ্ট Java ক্লাসের মধ্যে nested অবজেক্টের জন্য নিজে থেকেই রূপান্তর করতে পারে যদি আপনি সঠিক Java ক্লাসের মধ্যে nested ক্লাস তৈরি করে দেন।
Gson ব্যবহার করে JSON ডেটাকে Java Object-এ রূপান্তর (Deserialization) করার সময়, আপনি বিভিন্ন ধরনের ডেটা টাইপ যেমন Primitive টাইপ (int, boolean, float ইত্যাদি), String, এবং Custom Objects কে ডেসেরিয়ালাইজ করতে পারেন। নিচে এই সমস্ত ডেসেরিয়ালাইজেশন প্রক্রিয়া বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।
1. Primitive Data Types (int, float, boolean)
Gson সহজেই primitive টাইপ যেমন int, boolean, float, double ইত্যাদিকে JSON থেকে Java primitive টাইপে রূপান্তর করতে পারে।
উদাহরণ: Primitive Data Type (int)
JSON:
{
"age": 30
}
Java Code:
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
String json = "{\"age\":30}";
Gson gson = new Gson();
// JSON to Primitive (int)
int age = gson.fromJson(json, int.class);
System.out.println("Age: " + age);
}
}
আউটপুট:
Age: 30
2. String Data Type
String ডেটাকে JSON থেকে Java String এ ডেসেরিয়ালাইজ করা খুবই সাধারণ প্রক্রিয়া। Gson স্বাভাবিকভাবে এটি সমর্থন করে।
উদাহরণ: String Data Type
JSON:
{
"name": "Rahim"
}
Java Code:
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"Rahim\"}";
Gson gson = new Gson();
// JSON to String
String name = gson.fromJson(json, String.class);
System.out.println("Name: " + name);
}
}
আউটপুট:
Name: Rahim
3. Custom Object (Complex Object)
Gson কাস্টম অবজেক্ট ডেসেরিয়ালাইজ করতে সক্ষম, যেটা কোনো Java ক্লাস হতে পারে, যার মধ্যে একাধিক ফিল্ড এবং বিভিন্ন ডেটা টাইপ থাকে। এটি করার জন্য, JSON স্ট্রাকচার এবং Java ক্লাসের মধ্যে সঠিক মেপিং থাকতে হবে।
উদাহরণ: Custom Object
Java Class (Custom Object):
class User {
String name;
int age;
String email;
// Constructor
public User(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
// Getter methods
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getEmail() {
return email;
}
}
JSON:
{
"name": "Rahim",
"age": 30,
"email": "rahim@example.com"
}
Java Code (Deserialization to Custom Object):
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"Rahim\",\"age\":30,\"email\":\"rahim@example.com\"}";
Gson gson = new Gson();
// JSON to Custom Object (User)
User user = gson.fromJson(json, User.class);
System.out.println("Name: " + user.getName());
System.out.println("Age: " + user.getAge());
System.out.println("Email: " + user.getEmail());
}
}
আউটপুট:
Name: Rahim
Age: 30
Email: rahim@example.com
4. কাস্টম ডেসেরিয়ালাইজেশন (Custom Deserialization)
Gson একটি কাস্টম ডেসেরিয়ালাইজার ব্যবহার করতে দেয়, যা আপনাকে JSON ডেটাকে আপনার ইচ্ছামত Java অবজেক্টে রূপান্তর করতে সাহায্য করে। এটি তখন ব্যবহার করা হয় যখন JSON ফর্ম্যাট খুবই কাস্টম বা জটিল হয় এবং সাধারণ ডেসেরিয়ালাইজেশন কাজ করে না।
উদাহরণ: Custom Deserializer
Java Class:
class User {
String name;
int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "User{name='" + name + "', age=" + age + "}";
}
}
Custom Deserializer:
import com.google.gson.*;
import java.lang.reflect.Type;
class UserDeserializer implements JsonDeserializer<User> {
@Override
public User deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
String name = jsonObject.get("fullName").getAsString();
int age = jsonObject.get("years").getAsInt();
return new User(name, age);
}
}
JSON:
{
"fullName": "Rahim",
"years": 30
}
Java Code (Using Custom Deserializer):
import com.google.gson.*;
public class Main {
public static void main(String[] args) {
String json = "{\"fullName\":\"Rahim\",\"years\":30}";
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(User.class, new UserDeserializer());
Gson gson = gsonBuilder.create();
// Custom Deserialization
User user = gson.fromJson(json, User.class);
System.out.println(user);
}
}
আউটপুট:
User{name='Rahim', age=30}
সারাংশ:
- Primitive Data Types (যেমন int, float) সহজেই JSON থেকে Java primitive টাইপে রূপান্তরিত হতে পারে।
- String ডেটা JSON থেকে String-এ রূপান্তরিত হয়।
- Custom Object (যেমন একটি Java ক্লাস) JSON থেকে Java Object-এ রূপান্তরিত করা হয়।
- Custom Deserialization ব্যবহার করে আপনি বিশেষভাবে কাস্টম JSON ফরম্যাট থেকে Java Object তৈরি করতে পারেন।
Gson-এ এই ডেসেরিয়ালাইজেশন প্রক্রিয়াগুলি খুবই সহজ, এবং এটি অনেক সময় JSON ডেটাকে Java অবজেক্টে রূপান্তরিত করতে সাহায্য করে, যা Java ডেভেলপমেন্টে খুবই কার্যকরী।
Read more