Custom Serializer এবং Deserializer হল এমন কাস্টম লজিক যা JSON অবজেক্টকে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার জন্য ব্যবহৃত হয়। যখন আপনি JSON অবজেক্টে কিছু কাস্টম ডেটা টাইপ বা স্ট্রাকচার ব্যবহার করতে চান, তখন custom serializer এবং custom deserializer ব্যবহার করতে পারেন।
org.json লাইব্রেরিতে সরাসরি কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজারের জন্য কোনো বিল্ট-ইন মেকানিজম নেই, তবে আপনি কিছু কাস্টম লজিক প্রয়োগ করে এই কাজগুলো সম্পন্ন করতে পারেন।
এখানে, আমরা JSON Object এর জন্য Custom Serializer এবং Deserializer তৈরি করার জন্য উদাহরণ দেখব।
Custom Serializer এবং Deserializer কী?
- Custom Serializer: JSON অবজেক্টের একটি কাস্টম ফরম্যাটে রূপান্তর করার প্রক্রিয়া। যেমন, কোন বিশেষ কাস্টম অবজেক্টের ডেটাকে JSON এ সঠিকভাবে রূপান্তর করা।
- Custom Deserializer: JSON থেকে একটি কাস্টম অবজেক্টে ডেটা রূপান্তর করার প্রক্রিয়া। এটি JSON স্ট্রিংকে কাস্টম অবজেক্টে কনভার্ট করার সময় ব্যবহৃত হয়।
Custom Serializer উদাহরণ
ধরা যাক, আমাদের একটি Person ক্লাস আছে এবং আমরা এটি JSON এ কাস্টম ফরম্যাটে সিরিয়ালাইজ করতে চাই।
১. Person ক্লাস তৈরি করা
public class Person {
private String name;
private int age;
// Constructor, getters and setters
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
২. Custom Serializer তৈরি করা
এখানে আমরা Person অবজেক্টকে JSON ফরম্যাটে কাস্টমভাবে সিরিয়ালাইজ করতে JSONObject এর মাধ্যমে কাস্টম লজিক তৈরি করব।
import org.json.JSONObject;
public class CustomSerializer {
public static JSONObject serializePerson(Person person) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("full_name", person.getName()); // Custom key "full_name"
jsonObject.put("years_old", person.getAge()); // Custom key "years_old"
return jsonObject;
}
public static void main(String[] args) {
// Person অবজেক্ট তৈরি
Person person = new Person("John Doe", 30);
// Custom Serializer ব্যবহার করে JSON এ কনভার্ট
JSONObject json = serializePerson(person);
System.out.println(json.toString());
}
}
আউটপুট:
{
"full_name": "John Doe",
"years_old": 30
}
এখানে, আমরা Person অবজেক্টের name এবং age প্রোপার্টিকে কাস্টম কী (full_name এবং years_old) দিয়ে JSON ফরম্যাটে রূপান্তর করেছি।
Custom Deserializer উদাহরণ
এখন, JSON থেকে কাস্টম ডেটা টাইপে ডেটা রূপান্তর করার জন্য একটি কাস্টম ডেসিরিয়ালাইজার তৈরি করা হবে।
১. Custom Deserializer তৈরি করা
import org.json.JSONObject;
public class CustomDeserializer {
public static Person deserializePerson(JSONObject jsonObject) {
// Custom key "full_name" থেকে নাম এবং "years_old" থেকে বয়স পেতে হবে
String name = jsonObject.getString("full_name");
int age = jsonObject.getInt("years_old");
return new Person(name, age);
}
public static void main(String[] args) {
// JSON অবজেক্ট
String jsonString = "{\"full_name\": \"John Doe\", \"years_old\": 30}";
JSONObject jsonObject = new JSONObject(jsonString);
// Custom Deserializer ব্যবহার করে JSON থেকে Person অবজেক্ট তৈরি
Person person = deserializePerson(jsonObject);
System.out.println(person);
}
}
আউটপুট:
Person{name='John Doe', age=30}
এখানে, আমরা JSON অবজেক্টে থাকা কাস্টম কী full_name এবং years_old থেকে ডেটা নিয়ে Person অবজেক্ট তৈরি করেছি।
সারাংশ
Custom Serializer এবং Deserializer আপনাকে JSON অবজেক্টের কাস্টম স্ট্রাকচার এবং ডেটা টাইপগুলি কাস্টম কী এবং ভ্যালু দ্বারা কাস্টমাইজ করতে সহায়তা করে। এটি JSON ফরম্যাটে ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার সময় প্রয়োজনীয় কাস্টম লজিক প্রয়োগ করতে খুবই সহায়ক।
- Custom Serializer: JSON অবজেক্টে ডেটা রূপান্তরের সময় কাস্টম কী এবং ভ্যালু ব্যবহার করা হয়।
- Custom Deserializer: JSON থেকে কাস্টম অবজেক্টে ডেটা রূপান্তরের সময় কাস্টম কী এবং ভ্যালু ব্যবহার করা হয়।
এই কৌশলগুলি JSON ডেটার সাথে কাজ করার সময় আপনার অ্যাপ্লিকেশনকে আরও বেশি কাস্টমাইজড এবং শক্তিশালী করতে সাহায্য করবে।
JSON (JavaScript Object Notation) একটি জনপ্রিয় ডাটা এক্সচেঞ্জ ফরম্যাট, যা বিভিন্ন প্রোগ্রামিং ভাষার মধ্যে ডেটা ট্রান্সফারের জন্য ব্যবহৃত হয়। Java-তে JSON ডেটার প্রক্রিয়াকরণ করার জন্য org.json লাইব্রেরি ব্যবহার করা হয়। তবে কিছু বিশেষ ক্ষেত্রে, যখন JSON ডেটা প্রক্রিয়াকরণের জন্য ডিফল্ট সিরিয়ালাইজেশন বা ডেসিরিয়ালাইজেশন যথেষ্ট হয় না, তখন Custom Serializer এবং Custom Deserializer প্রয়োজন হয়।
এই টিউটোরিয়ালে, আমরা জানব Custom Serializer এবং Custom Deserializer কি, এবং এগুলির ব্যবহার কেন প্রয়োজন।
Custom Serializer কি?
Custom Serializer এমন একটি কাস্টম ক্লাস বা কাস্টম ফাংশন যা নির্দিষ্ট অবজেক্ট বা ডেটা ফরম্যাটকে JSON ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয়। সাধারণভাবে, JSON সিরিয়ালাইজেশন কাজটি org.json লাইব্রেরি নিজেই স্বয়ংক্রিয়ভাবে করে থাকে। তবে যদি আপনার ডেটা কাঠামো বা কোনো নির্দিষ্ট শর্ত থাকে যেটি ডিফল্ট সিরিয়ালাইজেশন প্রক্রিয়া দ্বারা হ্যান্ডল করা সম্ভব না হয়, তখন কাস্টম সিরিয়ালাইজার ব্যবহার করতে হয়।
উদাহরণস্বরূপ, যদি কোনো অবজেক্টে বিশেষভাবে ডেটা ফরম্যাট পরিবর্তন করার প্রয়োজন হয় (যেমন, সময়ের মানকে একটি নির্দিষ্ট ফরম্যাটে স্টোর করা), তখন কাস্টম সিরিয়ালাইজার ব্যবহার করা হবে।
Custom Deserializer কি?
Custom Deserializer এমন একটি কাস্টম ক্লাস বা কাস্টম ফাংশন যা JSON ডেটাকে Java অবজেক্টে রূপান্তর (ডেসিরিয়ালাইজ) করতে ব্যবহৃত হয়। সাধারণত, JSON ডেটা Java অবজেক্টে ডেসিরিয়ালাইজ করার জন্য org.json লাইব্রেরি নিজেই কাজ করে। কিন্তু যদি আপনার JSON ডেটার মধ্যে কিছু বিশেষ কনভার্সন প্রক্রিয়া থাকে বা কাস্টম লজিক প্রয়োগ করতে হয়, তখন কাস্টম ডেসিরিয়ালাইজার ব্যবহার করা হয়।
যেমন, যদি JSON ডেটাতে কোনো নির্দিষ্ট কনভার্সন ফর্ম্যাট ব্যবহার করতে হয়, যেমন ডেটা টাইপ পরিবর্তন বা বিশেষ ধরনের ইনপুট গ্রহণ, তখন কাস্টম ডেসিরিয়ালাইজার ব্যবহার করা হবে।
Custom Serializer এবং Deserializer প্রয়োজন কেন?
কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার ব্যবহারের প্রয়োজন পড়ে যখন:
- বিশেষ কাস্টম ডেটা ফরম্যাট: JSON এবং Java অবজেক্টের মধ্যে কাস্টম ফরম্যাটে ডেটা রূপান্তর করতে হয়। উদাহরণস্বরূপ, একটি বিশেষ তারিখ ফরম্যাট বা টোকেন টাইপ পরিবর্তন।
- ডিফল্ট লজিকের বাইরে কাজ: ডিফল্ট JSON সিরিয়ালাইজেশন/ডেসিরিয়ালাইজেশন প্রক্রিয়া আপনার ডেটা কাঠামোর জন্য যথেষ্ট নয়, তাই কাস্টম লজিক প্রয়োগ করা প্রয়োজন।
- কাস্টম প্রপার্টি ম্যানিপুলেশন: কিছু প্রপার্টি বা ডেটা আইটেম JSON ডেটায় একটি নির্দিষ্ট আকারে সংরক্ষণ করতে হতে পারে।
- ডেটা ফিল্টারিং: কিছু ক্ষেত্র বাদ দিয়ে বা পরিবর্তন করে JSON ডেটা তৈরি করতে হতে পারে, যা ডিফল্ট সিরিয়ালাইজেশন হ্যান্ডেল করতে পারে না।
উদাহরণ: Custom Serializer
ধরা যাক, আমাদের একটি Employee অবজেক্ট আছে এবং আমরা চাই যে Employee অবজেক্টের hireDate প্রপার্টিটি JSON ফরম্যাটে একটি নির্দিষ্ট তারিখ ফরম্যাটে রূপান্তরিত হোক। এর জন্য কাস্টম সিরিয়ালাইজার ব্যবহার করা যেতে পারে।
import org.json.JSONObject;
import org.json.JSONStringer;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Employee {
private String name;
private Date hireDate;
// Constructor
public Employee(String name, Date hireDate) {
this.name = name;
this.hireDate = hireDate;
}
// Custom serializer method
public JSONObject toJSON() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", this.name);
// Custom date format
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = sdf.format(this.hireDate);
jsonObject.put("hireDate", formattedDate);
return jsonObject;
}
}
এই ক্ষেত্রে, Employee অবজেক্টের hireDate প্রপার্টি কাস্টম ফরম্যাটে রূপান্তরিত হচ্ছে, যেমন "yyyy-MM-dd"।
উদাহরণ: Custom Deserializer
একটি কাস্টম ডেসিরিয়ালাইজার ব্যবহার করে JSON থেকে Java অবজেক্টে ডেটা রূপান্তর করতে, ধরুন আপনি একটি Employee অবজেক্টে hireDate কে একটি নির্দিষ্ট তারিখ ফরম্যাটে ডেসিরিয়ালাইজ করতে চান:
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Employee {
private String name;
private Date hireDate;
// Constructor
public Employee(String name, Date hireDate) {
this.name = name;
this.hireDate = hireDate;
}
// Custom deserializer method
public static Employee fromJSON(JSONObject jsonObject) throws Exception {
String name = jsonObject.getString("name");
// Custom date parsing
String hireDateStr = jsonObject.getString("hireDate");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date hireDate = sdf.parse(hireDateStr);
return new Employee(name, hireDate);
}
}
এখানে, hireDate প্রপার্টিটি JSON ডেটা থেকে নির্দিষ্ট তারিখ ফরম্যাটে ডেসিরিয়ালাইজ করা হচ্ছে।
কেন কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার ব্যবহার করা উচিত?
- বিশেষ প্রয়োজনে ফরম্যাট প্রক্রিয়া: JSON ডেটার মধ্যে আপনার প্রয়োজন অনুযায়ী কাস্টম লজিক প্রয়োগ করা।
- ডেটা নিরাপত্তা ও ফিল্টারিং: কিছু ডেটা বা প্রপার্টি বাদ দেয়া, পরিবর্তন বা শীর্ষস্থানীয় নিরাপত্তার জন্য।
- পারফরম্যান্স বৃদ্ধি: কাস্টম লজিক প্রয়োগের মাধ্যমে পারফরম্যান্স বা ডেটা প্রক্রিয়াকরণ দ্রুত করা যেতে পারে।
সারাংশ
Custom Serializer এবং Custom Deserializer Java-তে JSON ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রক্রিয়া কাস্টমাইজ করতে ব্যবহৃত হয়। এগুলি ব্যবহারের মাধ্যমে, আপনি আপনার ডেটা কাঠামো এবং ফরম্যাট অনুযায়ী JSON ডেটাকে প্রক্রিয়া করতে পারেন। যখন ডিফল্ট প্রক্রিয়া আপনার বিশেষ প্রয়োজন মেটাতে সক্ষম না হয়, তখন কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার অত্যন্ত কার্যকরী হয়ে ওঠে।
অর্গ.জেসন (Org.Json) লাইব্রেরি JSON ডাটা ম্যানিপুলেশন এবং স্টোরেজের জন্য জনপ্রিয় একটি টুল। তবে কখনো কখনো আপনার প্রয়োজন হতে পারে কাস্টম সিরিয়ালাইজেশন (Custom Serialization) তৈরি করার, যেখানে আপনি JSON অবজেক্টের মধ্যে ডাটা সিরিয়ালাইজ করার জন্য বিশেষ কোনো লজিক ব্যবহার করতে পারেন।
কাস্টম সিরিয়ালাইজার তৈরি করার জন্য, JSONObject ক্লাসের put() মেথডের পাশাপাশি, আপনি আপনার নিজস্ব কাস্টম সিরিয়ালাইজেশন লজিকও প্রয়োগ করতে পারেন। এটি বিশেষভাবে দরকারি হয় যখন আপনি কোনো অবজেক্টের ফিল্ডগুলিকে বিশেষভাবে প্রক্রিয়া করতে চান বা নির্দিষ্ট ধরনের ডাটা মানে কনভার্ট করতে চান।
কাস্টম সিরিয়ালাইজার তৈরি করার প্রক্রিয়া
- Custom Object তৈরি করুন: একটি কাস্টম অবজেক্ট তৈরি করুন, যেমন একটি ক্লাস।
- Custom Serialization Logic: আপনি যে কাস্টম সিরিয়ালাইজেশন প্রক্রিয়া চান, সেটি তৈরি করুন।
- JSONObject.put() ব্যবহার করুন:
JSONObject.put()মেথডের মাধ্যমে আপনার কাস্টম সিরিয়ালাইজেশন লজিক প্রয়োগ করুন।
উদাহরণ: কাস্টম সিরিয়ালাইজার তৈরি করা
ধরা যাক, আমাদের একটি Person ক্লাস আছে এবং আমরা একটি কাস্টম সিরিয়ালাইজার তৈরি করতে চাই, যা Person অবজেক্টের age ফিল্ডকে একটি বিশেষ ফরম্যাটে JSON এ সিরিয়ালাইজ করবে।
Step 1: Custom Object তৈরি (Person ক্লাস)
public class Person {
private String name;
private int age;
private String city;
// কনস্ট্রাক্টর
public Person(String name, int age, String city) {
this.name = name;
this.age = age;
this.city = city;
}
// Getter এবং Setter
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getCity() {
return city;
}
}
Step 2: কাস্টম সিরিয়ালাইজেশন Logic তৈরি
আমরা কাস্টম সিরিয়ালাইজেশনে age ফিল্ডকে একটি বিশেষ ফরম্যাটে কনভার্ট করব (যেমন, "Age: 30")।
import org.json.JSONObject;
public class CustomSerializer {
// Custom Serializer Method
public static JSONObject serializePerson(Person person) {
JSONObject jsonObject = new JSONObject();
// Person এর ডাটা JSON অবজেক্টে যোগ করা
jsonObject.put("name", person.getName());
// কাস্টম ফরম্যাটে age সিরিয়ালাইজেশন
String customAgeFormat = "Age: " + person.getAge();
jsonObject.put("age", customAgeFormat);
jsonObject.put("city", person.getCity());
return jsonObject;
}
public static void main(String[] args) {
// Person অবজেক্ট তৈরি
Person person = new Person("John", 30, "New York");
// কাস্টম সিরিয়ালাইজার ব্যবহার
JSONObject serializedPerson = serializePerson(person);
// JSON আউটপুট প্রিন্ট করা
System.out.println(serializedPerson.toString());
}
}
কোডের ব্যাখ্যা
- Person ক্লাস: এখানে একটি সাধারণ
Personক্লাস তৈরি করা হয়েছে যার তিনটি প্রপার্টি রয়েছে (name,age,city)। এর জন্য কনস্ট্রাক্টর এবং getter methods দেওয়া হয়েছে। - serializePerson() মেথড: এটি একটি কাস্টম সিরিয়ালাইজার মেথড যা
Personঅবজেক্টটি গ্রহণ করে এবংJSONObjectএ কাস্টম সিরিয়ালাইজেশন লজিক প্রয়োগ করে।ageফিল্ডটি আমরা কাস্টম ফরম্যাটে সিরিয়ালাইজ করেছি, যেমন"Age: 30"। - Main Method: এই মেথডে একটি
Personঅবজেক্ট তৈরি করা হয়েছে এবং তা কাস্টম সিরিয়ালাইজার মেথডের মাধ্যমে JSON অবজেক্টে কনভার্ট করা হয়েছে।
আউটপুট:
{"name":"John","age":"Age: 30","city":"New York"}
কাস্টম সিরিয়ালাইজেশন এর প্রয়োগ
এভাবে আপনি কাস্টম সিরিয়ালাইজেশন প্রক্রিয়া ব্যবহার করে JSON অবজেক্টে যেকোনো ডাটা কাস্টম ফরম্যাটে সিরিয়ালাইজ করতে পারেন। যেমন:
- Date formatting: যদি আপনার কোনো
Dateটাইপের ফিল্ড থাকে, তাহলে আপনি একটি নির্দিষ্ট তারিখ ফরম্যাটে সিরিয়ালাইজ করতে পারেন। - Complex objects: যদি আপনার অবজেক্টে আরও অন্যান্য অবজেক্ট থাকে, সেগুলির জন্যও কাস্টম সিরিয়ালাইজার তৈরি করা যেতে পারে।
- Sensitive information: আপনি কোনো নির্দিষ্ট ইনফরমেশন (যেমন পাসওয়ার্ড) JSON এ সিরিয়ালাইজ করার আগে এনক্রিপ্ট করতে পারেন।
উপসংহার
অর্গ.জেসন (Org.Json) লাইব্রেরি ব্যবহার করে কাস্টম সিরিয়ালাইজার তৈরি করা খুবই সহজ এবং কার্যকর। JSONObject.put() মেথডের মাধ্যমে আপনি সহজেই কাস্টম সিরিয়ালাইজেশন লজিক প্রয়োগ করতে পারেন এবং বিভিন্ন ধরনের ডাটা যেমন Date, Integer, String ইত্যাদি কাস্টম ফরম্যাটে JSON এ সিরিয়ালাইজ করতে পারেন। এটি JSON ডাটা তৈরির সময় বিশেষ প্রয়োজনে অত্যন্ত সহায়ক।
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 ডেটা পরিচালনা করতে পারবেন।
JSON ডেটা ফিল্টারিং এবং ম্যানিপুলেশন হলো JSON ডেটার মধ্যে প্রয়োজনীয় তথ্য এক্সট্র্যাক্ট এবং পরিবর্তন করার প্রক্রিয়া। এটি সাধারণত JSON ডেটার বড় অবজেক্টে প্রয়োজনীয় তথ্য খুঁজে বের করার জন্য ব্যবহৃত হয় এবং JSON ডেটাকে আরও কার্যকরী ও মানানসই করার জন্য পরিবর্তন করা হয়। org.json লাইব্রেরি JSON ডেটার সাথে কাজ করতে সাহায্য করে, এবং এর মাধ্যমে JSON ডেটা ফিল্টারিং এবং ম্যানিপুলেশন করা সম্ভব হয়।
JSON Filtering এবং Manipulation এর প্রয়োজনীয়তা
- ডেটা ফিল্টারিং: বড় JSON অবজেক্টের মধ্যে থেকে নির্দিষ্ট কীগুলোর মান বের করা।
- ডেটা ম্যানিপুলেশন: JSON অবজেক্টের মান পরিবর্তন, নতুন মান যোগ করা, বা কিছু মান মুছে ফেলা।
- অ্যানালাইসিস: JSON ডেটা বিশ্লেষণ করে মান বের করা এবং ফলাফল অনুযায়ী ডেটা আপডেট বা পরিবর্তন করা।
JSON Filtering এবং Manipulation এর জন্য Org.JSON লাইব্রেরি
Org.JSON লাইব্রেরি ব্যবহার করে JSON ডেটার মধ্যে বিভিন্ন অপারেশন যেমন:
- JSON অবজেক্ট থেকে কীগুলোর মান এক্সট্র্যাক্ট করা,
- নতুন কীগুলোর মান যোগ করা,
- কীগুলোর মান পরিবর্তন করা,
- কীগুলো মুছে ফেলা।
এখানে কিছু সাধারণ ফিল্টারিং এবং ম্যানিপুলেশন অপারেশন নিয়ে আলোচনা করা হয়েছে।
JSON Data Filtering
JSON ডেটা ফিল্টারিং মানে হলো JSON অবজেক্ট বা অ্যারের মধ্যে থেকে নির্দিষ্ট কীগুলোর মান বের করা।
উদাহরণ: JSON থেকে নির্দিষ্ট কীগুলোর মান এক্সট্র্যাক্ট করা
import org.json.JSONObject;
public class JsonFilteringExample {
public static void main(String[] args) {
// একটি JSON অবজেক্ট তৈরি করা
String jsonString = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\", \"email\": \"john@example.com\" }";
JSONObject jsonObject = new JSONObject(jsonString);
// নির্দিষ্ট কীগুলোর মান বের করা
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
// আউটপুট
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
এখানে JSON অবজেক্ট থেকে name এবং age কীগুলোর মান বের করা হয়েছে। আউটপুট হবে:
Name: John
Age: 30
JSON Data Manipulation
JSON ম্যানিপুলেশন মানে হলো JSON অবজেক্টের কীগুলোর মান পরিবর্তন, নতুন কীগুলোর মান যোগ করা, বা কীগুলো মুছে ফেলা।
উদাহরণ: JSON অবজেক্টে নতুন মান যোগ করা
import org.json.JSONObject;
public class JsonManipulationExample {
public static void main(String[] args) {
// একটি JSON অবজেক্ট তৈরি করা
JSONObject jsonObject = new JSONObject();
// কীগুলোর মান যোগ করা
jsonObject.put("name", "John");
jsonObject.put("age", 30);
// নতুন কীগুলোর মান যোগ করা
jsonObject.put("city", "New York");
// JSON অবজেক্টে মান পরিবর্তন করা
jsonObject.put("age", 31); // age পরিবর্তন করা
// JSON অবজেক্ট থেকে মান মুছে ফেলা
jsonObject.remove("city");
// আউটপুট
System.out.println(jsonObject.toString());
}
}
এখানে, jsonObject.put() মেথড ব্যবহার করে নতুন মান যোগ করা হয়েছে, jsonObject.put() দিয়ে মান পরিবর্তন করা হয়েছে, এবং jsonObject.remove() দিয়ে একটি কী মুছে ফেলা হয়েছে। আউটপুট হবে:
{"name":"John","age":31}
JSON Data Filtering with Conditions
JSON ডেটা ফিল্টারিং কিছু শর্ত অনুযায়ী করা যেতে পারে, যেমন কীগুলোর মানের ভিত্তিতে ফিল্টার করা।
উদাহরণ: JSON অ্যারে ফিল্টারিং
ধরা যাক, আমাদের একটি JSON অ্যারে রয়েছে এবং আমরা অ্যারের মধ্যে কিছু শর্ত অনুসারে মান বের করতে চাই।
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonArrayFilteringExample {
public static void main(String[] args) {
// একটি JSON অ্যারে তৈরি করা
JSONArray jsonArray = new JSONArray();
// কিছু JSON অবজেক্ট অ্যারে তে যোগ করা
jsonArray.put(new JSONObject().put("name", "John").put("age", 30));
jsonArray.put(new JSONObject().put("name", "Jane").put("age", 25));
jsonArray.put(new JSONObject().put("name", "Mike").put("age", 35));
// বয়স 30 এর বেশি এমন লোক খোঁজা
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject obj = jsonArray.getJSONObject(i);
if (obj.getInt("age") > 30) {
System.out.println("Name: " + obj.getString("name") + ", Age: " + obj.getInt("age"));
}
}
}
}
এখানে, JSON অ্যারে থেকে এমন ব্যক্তিদের ফিল্টার করা হয়েছে যাদের বয়স 30 এর বেশি। আউটপুট হবে:
Name: Mike, Age: 35
JSON Data Manipulation with Nested JSON Objects
কখনো কখনো JSON ডেটা নেস্টেড (nested) হতে পারে, যেখানে একটি JSON অবজেক্টের মধ্যে অন্য একটি JSON অবজেক্ট থাকে। নেস্টেড JSON অবজেক্টের মান ম্যানিপুলেট বা ফিল্টার করার উদাহরণ নিচে দেওয়া হলো।
উদাহরণ: Nested JSON Object Manipulation
import org.json.JSONObject;
public class NestedJsonManipulationExample {
public static void main(String[] args) {
// একটি JSON অবজেক্ট তৈরি করা
JSONObject jsonObject = new JSONObject();
// নেস্টেড অবজেক্ট তৈরি করা
JSONObject address = new JSONObject();
address.put("city", "New York");
address.put("zipcode", "10001");
// মূল অবজেক্টে নেস্টেড অবজেক্ট যোগ করা
jsonObject.put("name", "John");
jsonObject.put("age", 30);
jsonObject.put("address", address);
// Nested JSON Object থেকে মান এক্সট্র্যাক্ট করা
JSONObject addressObj = jsonObject.getJSONObject("address");
String city = addressObj.getString("city");
// Nested JSON Object এ মান পরিবর্তন করা
addressObj.put("zipcode", "20001");
// আউটপুট
System.out.println("City: " + city);
System.out.println("Updated Address: " + jsonObject.toString());
}
}
এখানে, address নামক একটি নেস্টেড JSON অবজেক্ট তৈরি করা হয়েছে এবং এটি মূল JSON অবজেক্টে যোগ করা হয়েছে। তারপর, zipcode পরিবর্তন করা হয়েছে এবং JSON অবজেক্টের মান প্রিন্ট করা হয়েছে। আউটপুট হবে:
City: New York
Updated Address: {"name":"John","age":30,"address":{"city":"New York","zipcode":"20001"}}
সারাংশ
Org.JSON লাইব্রেরি Java-তে JSON ডেটা ফিল্টারিং এবং ম্যানিপুলেশন করার জন্য অত্যন্ত শক্তিশালী এবং সহজ পদ্ধতি প্রদান করে। JSON অবজেক্ট থেকে নির্দিষ্ট কীগুলোর মান এক্সট্র্যাক্ট করা, নতুন মান যোগ করা, মান পরিবর্তন করা, এবং কীগুলো মুছে ফেলা সহজেই করা যায়। এছাড়া, JSON অ্যারে ফিল্টারিং এবং নেস্টেড JSON অবজেক্টের মান ম্যানিপুলেশনও সম্ভব। JSON ডেটা ফিল্টারিং এবং ম্যানিপুলেশন দিয়ে ডেভেলপাররা সহজেই প্রয়োজনীয় ডেটা এক্সট্র্যাক্ট এবং পরিবর্তন করতে পারেন, যা ডেটা প্রসেসিং এবং বিশ্লেষণে সহায়তা করে।
Read more