Custom Serializer এবং Custom Deserializer JSON ডেটার কাস্টম প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। যখন আপনি org.json লাইব্রেরি ব্যবহার করেন, তখন আপনি নির্দিষ্ট অবজেক্টগুলি কাস্টম ভাবে JSON স্ট্রিং বা JSON অবজেক্টে রূপান্তর করতে পারেন। এটি বিশেষভাবে দরকারি হয় যখন আপনার অবজেক্টগুলির কাঠামো ডিফল্ট JSON কনভার্সন থেকে ভিন্ন বা জটিল হয়।
এখানে আমরা দেখব কীভাবে Custom Serializer এবং Custom Deserializer তৈরি করা যায়।
Custom Serializer
Custom Serializer ব্যবহার করে আপনি একটি Java অবজেক্টকে কাস্টম JSON ফরম্যাটে কনভার্ট করতে পারেন। এটি org.json.JSONObject ব্যবহার করে JSON অবজেক্টে কাস্টম ফিল্ডের মান সেট করতে সহায়তা করে।
উদাহরণ: Custom Serializer তৈরি করা
ধরা যাক, আমাদের একটি Person ক্লাস আছে যার মধ্যে name এবং birthDate রয়েছে। কিন্তু আমরা birthDate ফিল্ডটি কাস্টম ফরম্যাটে JSON এ রাখতে চাই।
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Date;
class Person {
String name;
Date birthDate;
public Person(String name, Date birthDate) {
this.name = name;
this.birthDate = birthDate;
}
// Custom Serializer Method
public JSONObject toJson() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", this.name);
// Custom Date Format
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
jsonObject.put("birthDate", dateFormat.format(this.birthDate));
return jsonObject;
}
}
public class CustomSerializerExample {
public static void main(String[] args) {
// Person অবজেক্ট তৈরি
Person person = new Person("John Doe", new Date());
// Custom Serializer ব্যবহার করে JSON তৈরি করা
JSONObject json = person.toJson();
System.out.println("Serialized JSON: " + json.toString());
}
}
কোডের ব্যাখ্যা
- toJson(): এখানে আমরা
Personক্লাসের জন্য একটি কাস্টমtoJson()মেথড তৈরি করেছি, যাPersonঅবজেক্টকে JSON ফরম্যাটে কনভার্ট করে।birthDateফিল্ডটি আমরা কাস্টম ডেটা ফরম্যাটে সংরক্ষণ করেছি। - SimpleDateFormat:
birthDateকে "dd-MM-yyyy" ফরম্যাটে কনভার্ট করার জন্য ব্যবহার করেছি।
আউটপুট:
Serialized JSON: {"name":"John Doe","birthDate":"22-12-2024"}
Custom Deserializer
Custom Deserializer ব্যবহার করে আপনি JSON ডেটাকে কাস্টম ফরম্যাট থেকে Java অবজেক্টে কনভার্ট করতে পারেন। এটি বিশেষভাবে দরকারি যখন JSON ডেটার ফরম্যাট Java অবজেক্টের কাঠামোর সাথে মেলে না এবং আপনি ডেটাকে একটি নির্দিষ্ট ফরম্যাটে পার্স করতে চান।
উদাহরণ: Custom Deserializer তৈরি করা
ধরা যাক, আমাদের JSON ডেটাতে birthDate ফিল্ডটি একটি কাস্টম ডেটা ফরম্যাটে রয়েছে এবং আমরা এটিকে Date টাইপে কনভার্ট করতে চাই।
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Date;
class Person {
String name;
Date birthDate;
public Person(String name, Date birthDate) {
this.name = name;
this.birthDate = birthDate;
}
// Custom Deserializer Method
public static Person fromJson(JSONObject jsonObject) {
String name = jsonObject.getString("name");
String birthDateStr = jsonObject.getString("birthDate");
// Custom Date Format
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date birthDate = null;
try {
birthDate = dateFormat.parse(birthDateStr);
} catch (Exception e) {
e.printStackTrace();
}
return new Person(name, birthDate);
}
@Override
public String toString() {
return "Person{name='" + name + "', birthDate=" + birthDate + '}';
}
}
public class CustomDeserializerExample {
public static void main(String[] args) {
// JSON ডেটা (birthDate কাস্টম ফরম্যাটে)
String jsonString = "{\"name\":\"John Doe\",\"birthDate\":\"22-12-2024\"}";
JSONObject jsonObject = new JSONObject(jsonString);
// Custom Deserializer ব্যবহার করে JSON ডেটা থেকে Java অবজেক্ট তৈরি করা
Person person = Person.fromJson(jsonObject);
System.out.println("Deserialized Person: " + person);
}
}
কোডের ব্যাখ্যা
- fromJson(): এখানে আমরা
Personক্লাসের জন্য একটি কাস্টমfromJson()মেথড তৈরি করেছি, যা JSON অবজেক্ট থেকেPersonঅবজেক্ট তৈরি করে।birthDateফিল্ডটি কাস্টম ডেটা ফরম্যাটে পার্স করা হয়েছে। - SimpleDateFormat: JSON ডেটার
birthDateফিল্ডটি পার্স করার জন্য আমরা "dd-MM-yyyy" ফরম্যাট ব্যবহার করেছি।
আউটপুট:
Deserialized Person: Person{name='John Doe', birthDate=Thu Dec 22 00:00:00 IST 2024}
সারাংশ
Custom Serializer এবং Custom Deserializer ব্যবহৃত হয় যখন JSON ডেটার কাঠামো Java অবজেক্টের কাঠামোর সাথে সঠিকভাবে মেলে না, বা আপনি JSON ডেটাকে একটি নির্দিষ্ট ফরম্যাটে কনভার্ট করতে চান। org.json লাইব্রেরি ব্যবহার করে আপনি সহজেই কাস্টম মেথডের মাধ্যমে JSON অবজেক্ট তৈরি এবং পার্স করতে পারেন।
- Custom Serializer: Java অবজেক্টকে কাস্টম JSON ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয়।
- Custom Deserializer: JSON ডেটাকে কাস্টম ফরম্যাট থেকে Java অবজেক্টে রূপান্তর করতে ব্যবহৃত হয়।
এভাবে আপনি নিজের প্রয়োজন অনুযায়ী JSON ডেটা পরিচালনা করতে পারবেন।
Read more