Skill

Custom Serializers এবং Deserializers

বুন (Boon) - Java Technologies

283

Custom Serializers এবং Deserializers কী?

Custom Serializers এবং Custom Deserializers হল কাস্টম কোড যা ডাটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার প্রক্রিয়ায় ব্যবহার করা হয়। যখন আপনি Java অবজেক্টগুলোকে JSON ডাটাতে রূপান্তর করেন (সিরিয়ালাইজেশন) বা JSON ডাটাকে Java অবজেক্টে রূপান্তর করেন (ডেসিরিয়ালাইজেশন), তখন কখনো কখনো আপনার নিজস্ব লজিক প্রয়োগ করার প্রয়োজন হয়। এই পরিস্থিতিতে কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার ব্যবহার করা হয়।

  • Custom Serializer: Java অবজেক্টকে JSON ফরম্যাটে রূপান্তর করার জন্য কাস্টম লজিক প্রয়োগ করা।
  • Custom Deserializer: JSON ডাটাকে Java অবজেক্টে রূপান্তর করার জন্য কাস্টম লজিক প্রয়োগ করা।

Boon লাইব্রেরি ব্যবহার করে আপনি সহজেই কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার তৈরি করতে পারেন।


Boon এ Custom Serializers এবং Deserializers তৈরি করা

Boon লাইব্রেরি JSON ডাটা ম্যানিপুলেশন এবং সিরিয়ালাইজেশন/ডেসিরিয়ালাইজেশন এর জন্য কিছু বিল্ট-ইন ফিচার প্রদান করে। তবে, যদি আপনি কাস্টম সিরিয়ালাইজেশন বা ডেসিরিয়ালাইজেশন করতে চান, তাহলে Boon আপনাকে কাস্টম লজিক প্রয়োগের সুযোগ দেয়।

1. Custom Serializer তৈরি করা

একটি কাস্টম সিরিয়ালাইজার তৈরি করার জন্য Boon এর BoonSerializer ইন্টারফেস বা কাস্টম JsonSerializer ক্লাস ব্যবহার করা যেতে পারে।

ধরা যাক, আপনার একটি Java অবজেক্ট আছে যার একটি ফিল্ডের মান পরিবর্তন করতে হবে JSON এ রূপান্তর করার আগে:

import io.boon.Boon;
import io.boon.json.JsonObject;
import io.boon.serializer.JsonSerializer;

public class CustomSerializerExample {

    public static class Person {
        String name;
        int age;

        Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }

    public static class PersonSerializer implements JsonSerializer {
        @Override
        public Object serialize(Object obj) {
            if (obj instanceof Person) {
                Person person = (Person) obj;
                JsonObject jsonObject = Boon.create();
                // কাস্টম সিরিয়ালাইজেশন লজিক
                jsonObject.put("fullName", person.name);  // name কে fullName হিসেবে JSON এ যোগ করা
                jsonObject.put("years", person.age);      // age কে years হিসেবে JSON এ যোগ করা
                return jsonObject;
            }
            return null;
        }
    }

    public static void main(String[] args) {
        Person person = new Person("John Doe", 30);

        // কাস্টম সিরিয়ালাইজার ব্যবহার করে JSON তৈরি
        PersonSerializer serializer = new PersonSerializer();
        JsonObject jsonObject = (JsonObject) serializer.serialize(person);
        
        System.out.println(jsonObject.toString());
    }
}

এই উদাহরণে, PersonSerializer ক্লাসটি Person অবজেক্টকে কাস্টম ফরম্যাটে JSON এ রূপান্তর করেছে, যেমন name ফিল্ডকে fullName এবং age ফিল্ডকে years হিসেবে JSON ডাটাতে পরিণত করা হয়েছে।


2. Custom Deserializer তৈরি করা

একটি কাস্টম ডেসিরিয়ালাইজার তৈরি করতে, আপনি JSON ডাটাকে Java অবজেক্টে রূপান্তর করার জন্য কাস্টম লজিক প্রয়োগ করতে পারেন। নিচে একটি কাস্টম ডেসিরিয়ালাইজারের উদাহরণ দেওয়া হলো:

import io.boon.Boon;
import io.boon.json.JsonObject;
import io.boon.serializer.JsonDeserializer;

public class CustomDeserializerExample {

    public static class Person {
        String name;
        int age;

        Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }

    public static class PersonDeserializer implements JsonDeserializer {
        @Override
        public Object deserialize(String json) {
            JsonObject jsonObject = Boon.fromJson(json, JsonObject.class);
            // কাস্টম ডেসিরিয়ালাইজেশন লজিক
            String name = jsonObject.get("fullName").toString();  // fullName কে name হিসেবে রূপান্তর
            int age = Integer.parseInt(jsonObject.get("years").toString());  // years কে age হিসেবে রূপান্তর
            return new Person(name, age);
        }
    }

    public static void main(String[] args) {
        String json = "{ \"fullName\": \"John Doe\", \"years\": 30 }";

        // কাস্টম ডেসিরিয়ালাইজার ব্যবহার করে JSON থেকে Java অবজেক্টে রূপান্তর
        PersonDeserializer deserializer = new PersonDeserializer();
        Person person = (Person) deserializer.deserialize(json);
        
        System.out.println("Name: " + person.name);
        System.out.println("Age: " + person.age);
    }
}

এই উদাহরণে, PersonDeserializer ক্লাসটি JSON ডাটাকে Person অবজেক্টে রূপান্তর করার জন্য কাস্টম লজিক ব্যবহার করেছে, যেমন fullName কে name এবং years কে age হিসেবে রূপান্তরিত করা হয়েছে।


3. Boon এ Custom Serializers এবং Deserializers রেজিস্টার করা

Boon এ কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার রেজিস্টার করার জন্য Boon এর BoonFactory বা BoonSerializerFactory ব্যবহার করা হয়। এটি আপনার কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজারকে JSON পার্সিং বা সিরিয়ালাইজেশনের জন্য রেজিস্টার করতে সাহায্য করবে।

import io.boon.Boon;
import io.boon.serializer.JsonSerializer;
import io.boon.serializer.JsonDeserializer;

public class RegisterCustomSerializers {
    public static void main(String[] args) {
        // কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার রেজিস্টার করা
        Boon.setSerializer(Person.class, new PersonSerializer());
        Boon.setDeserializer(Person.class, new PersonDeserializer());
        
        // এখন JSON পার্স বা সিরিয়ালাইজ করার সময় এই কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার ব্যবহার হবে
    }
}

এখানে, PersonSerializer এবং PersonDeserializer কে Boon এর setSerializer এবং setDeserializer মেথড দিয়ে রেজিস্টার করা হয়েছে।


সারাংশ

Boon লাইব্রেরি ব্যবহার করে আপনি কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার তৈরি করতে পারেন, যা JSON ডাটা এবং Java অবজেক্টের মধ্যে কাস্টম রূপান্তরের কাজ করে। এটি আপনাকে JSON ডাটা প্রক্রিয়াকরণে আপনার নিজস্ব লজিক প্রয়োগ করার সুযোগ দেয়, যাতে আপনি ডাটা স্ট্রাকচারকে আপনার প্রয়োজন অনুযায়ী কাস্টমাইজ করতে পারেন। Boon এর JsonSerializer এবং JsonDeserializer ইন্টারফেস ব্যবহার করে সহজেই এই কাস্টম ফিচার তৈরি করা সম্ভব।

Content added By

Boon হল একটি দ্রুত JSON প্রসেসিং লাইব্রেরি যা Java অ্যাপ্লিকেশনগুলিতে JSON সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন কার্যকরীভাবে সম্পন্ন করতে ব্যবহৃত হয়। তবে কখনও কখনও আমাদের নির্দিষ্ট কাস্টমাইজড সিরিয়ালাইজেশন প্রয়োজন হতে পারে, যেমন কিছু বিশেষ প্রপার্টি সিরিয়ালাইজ না করা বা কিছু ডেটা ফরম্যাটে রূপান্তর করা। Boon কাস্টম serialization এবং deserialization কনফিগার করার জন্য বিভিন্ন উপায় সরবরাহ করে।

এই গাইডে আমরা দেখব কিভাবে Boon লাইব্রেরি ব্যবহার করে কাস্টম সিরিয়ালাইজেশন কনফিগার করা যায়।


Custom Serialization কী?

Custom Serialization হল একটি প্রক্রিয়া যেখানে আপনি কিভাবে আপনার Java অবজেক্ট JSON ফরম্যাটে রূপান্তর হবে এবং কীভাবে সেটি পুনরায় Java অবজেক্টে ফিরবে, তা নিয়ন্ত্রণ করতে পারেন। এই প্রক্রিয়ায় আপনি কোনো নির্দিষ্ট প্রপার্টি সিরিয়ালাইজ না করার জন্য অথবা কিছু ডেটাকে বিশেষভাবে প্রসেস করার জন্য কাস্টম কনফিগারেশন তৈরি করতে পারেন।


Boon-এ Custom Serialization কনফিগার করা

Boon-এ custom serialization কনফিগার করতে, আপনি দুটি প্রধান পদ্ধতি ব্যবহার করতে পারেন:

  1. Boon.toJson() মেথডে কাস্টম সিরিয়ালাইজার ব্যবহার।
  2. @BoonSerialize এনোটেশন ব্যবহার।

ধাপ 1: Boon-এ Custom Serialization কনফিগার করতে Boon.toJson() ব্যবহার

এখানে, আপনি Boon.toJson() মেথড ব্যবহার করে কাস্টম সিরিয়ালাইজেশন কনফিগার করতে পারেন। উদাহরণস্বরূপ, আপনি যদি চান কিছু প্রপার্টি শুধুমাত্র নির্দিষ্ট শর্তে সিরিয়ালাইজ হোক, তবে আপনি একটি কাস্টম Serializer ক্লাস তৈরি করতে পারেন।

import org.boon.Boon;
import org.boon.serializer.Serializer;

public class CustomSerializationExample {
    public static void main(String[] args) {
        // POJO অবজেক্ট তৈরি
        Person person = new Person("John", 30);

        // কাস্টম সিরিয়ালাইজার তৈরি
        Serializer customSerializer = new Serializer() {
            @Override
            public String serialize(Object obj) {
                if (obj instanceof Person) {
                    Person p = (Person) obj;
                    // কাস্টম ফরম্যাটে JSON তৈরি
                    return "{\"fullName\":\"" + p.getName() + "\",\"age\":" + p.getAge() + "}";
                }
                return Boon.toJson(obj);
            }
        };

        // কাস্টম সিরিয়ালাইজার ব্যবহার করে JSON তৈরি
        String json = customSerializer.serialize(person);

        // JSON আউটপুট
        System.out.println(json);
    }

    static class Person {
        private String name;
        private int age;

        // Constructor, Getter and Setter
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }

        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;
        }
    }
}

এখানে, আমরা Person অবজেক্টের কাস্টম সিরিয়ালাইজেশন তৈরি করেছি, যেখানে name প্রপার্টিটি fullName হিসেবে সিরিয়ালাইজ হচ্ছে।

আউটপুট:

{"fullName":"John","age":30}

ধাপ 2: @BoonSerialize এনোটেশন ব্যবহার করা

Boon লাইব্রেরি @BoonSerialize এনোটেশন সমর্থন করে, যা নির্দিষ্ট ক্লাস বা প্রপার্টি কাস্টম সিরিয়ালাইজেশন পরিচালনা করতে সহায়তা করে। আপনি এটি ব্যবহার করে আপনার Java ক্লাসের প্রপার্টি কাস্টম সিরিয়ালাইজ করতে পারেন।

উদাহরণ:

import org.boon.Boon;
import org.boon.serializer.annotations.BoonSerialize;

public class CustomSerializationWithAnnotation {
    public static void main(String[] args) {
        // POJO অবজেক্ট তৈরি
        Person person = new Person("Alice", 25, "123-45-6789");

        // JSON তৈরি
        String json = Boon.toJson(person);

        // JSON আউটপুট
        System.out.println(json);
    }

    static class Person {
        private String name;
        private int age;

        @BoonSerialize(exclude = true) // SSN প্রপার্টি সিরিয়ালাইজ হবে না
        private String ssn;

        public Person(String name, int age, String ssn) {
            this.name = name;
            this.age = age;
            this.ssn = ssn;
        }

        // 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;
        }

        public String getSsn() {
            return ssn;
        }

        public void setSsn(String ssn) {
            this.ssn = ssn;
        }
    }
}

এখানে, @BoonSerialize(exclude = true) ব্যবহার করে SSN প্রপার্টিটি JSON সিরিয়ালাইজেশন থেকে বাদ দেয়া হয়েছে।

আউটপুট:

{"name":"Alice","age":25}

এখানে SSN প্রপার্টি JSON আউটপুটে নেই, কারণ এটি exclude করা হয়েছে।


সারাংশ

Boon লাইব্রেরি কাস্টম সিরিয়ালাইজেশন কনফিগার করার জন্য দুটি প্রধান পদ্ধতি সরবরাহ করে:

  1. Boon.toJson() মেথডে কাস্টম সিরিয়ালাইজার ব্যবহার করা।
  2. @BoonSerialize এনোটেশন ব্যবহার করে সিরিয়ালাইজেশন কাস্টমাইজ করা।

আপনি এই পদ্ধতিগুলি ব্যবহার করে আপনার Java ক্লাসের সিরিয়ালাইজেশন কাস্টমাইজ করতে পারেন এবং নির্দিষ্ট প্রপার্টি বা ডেটা ফরম্যাট অনুযায়ী JSON তৈরি করতে পারেন।


Content added By

বুন (Boon) লাইব্রেরি JSON পার্সিং এবং ম্যানিপুলেশনের জন্য একটি দ্রুত এবং কার্যকরী টুল, যা ডেভেলপারদের জন্য JSON ডেটা প্রক্রিয়া করা সহজ করে তোলে। সাধারণভাবে, বুন লাইব্রেরি ডিফল্ট ডেসিরিয়ালাইজেশন প্রক্রিয়া ব্যবহার করে JSON ডেটাকে POJO অবজেক্টে রূপান্তর করে। তবে, যদি আপনার কোনো বিশেষ কাস্টম ডেসিরিয়ালাইজেশন লজিক প্রয়োজন হয়, তাহলে আপনি Custom Deserializer তৈরি করতে পারেন।

Custom Deserializer তৈরি করার মাধ্যমে আপনি JSON ডেটার কিছু নির্দিষ্ট ফরম্যাট বা কনভার্শন কাস্টমাইজ করতে পারবেন, যেমন কোনো বিশেষ ফিল্ডের জন্য একটি নির্দিষ্ট রূপান্তর প্রক্রিয়া প্রয়োগ করা।

এখানে কাস্টম ডেসিরিয়ালাইজার তৈরি করার প্রক্রিয়া বিস্তারিতভাবে ব্যাখ্যা করা হলো।


1. Custom Deserializer তৈরি করার জন্য Steps

কাস্টম ডেসিরিয়ালাইজার তৈরি করতে, বুন লাইব্রেরিতে একটি কাস্টম ক্লাস তৈরি করতে হবে যা JSON ডেটাকে আপনার নির্দিষ্ট লজিক অনুসারে POJO অবজেক্টে রূপান্তর করবে। আপনি BoonDeserializer অথবা একটি সাধারণ Java ক্লাস ব্যবহার করে কাস্টম ডেসিরিয়ালাইজার তৈরি করতে পারেন।

2. Custom Deserializer Example

ধরা যাক, আমাদের একটি Person ক্লাস আছে এবং JSON ডেটার age ফিল্ডটি একটি স্ট্রিং হিসেবে আসছে, কিন্তু আমরা চাই এটি ইন্টিজারে কনভার্ট হোক। এর জন্য কাস্টম ডেসিরিয়ালাইজার তৈরি করতে হবে।

Step 1: POJO ক্লাস তৈরি করা

প্রথমে একটি সাধারণ POJO ক্লাস তৈরি করুন:

public class Person {
    private String name;
    private int age;

    // গেটার এবং সেটার মেথড
    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;
    }
}

Step 2: Custom Deserializer ক্লাস তৈরি করা

এখন একটি কাস্টম ডেসিরিয়ালাইজার তৈরি করুন, যা age ফিল্ডকে স্ট্রিং থেকে ইন্টিজার রূপে কনভার্ট করবে:

import io.boon.Boon;
import io.boon.json.JsonReader;
import io.boon.json.JsonWriter;

import java.util.Map;

public class PersonDeserializer {
    
    public static Person deserialize(String json) {
        // JSON ডেটা থেকে Map তৈরি করা
        JsonReader reader = Boon.createReader(json);
        Map<String, Object> map = reader.read(Map.class);

        // কাস্টম ডেসিরিয়ালাইজেশন: age ফিল্ডকে String থেকে Integer তে কনভার্ট করা
        Person person = new Person();
        person.setName((String) map.get("name"));
        
        // age ফিল্ডের কাস্টম কনভার্শন
        String ageStr = (String) map.get("age");
        if (ageStr != null) {
            person.setAge(Integer.parseInt(ageStr)); // String to Integer
        }

        return person;
    }

    public static void main(String[] args) {
        String json = "{\"name\":\"John Doe\", \"age\":\"30\"}";

        // কাস্টম ডেসিরিয়ালাইজেশন ব্যবহার করে JSON থেকে POJO তৈরি করা
        Person person = deserialize(json);

        // POJO ডেটা প্রিন্ট করা
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

এখানে, PersonDeserializer ক্লাসে আমরা age ফিল্ডের কাস্টম ডেসিরিয়ালাইজেশন লজিক প্রয়োগ করেছি। JSON ডেটার age ফিল্ডটি স্ট্রিং হিসেবে আসবে, কিন্তু আমরা এটি কাস্টমভাবে ইন্টিজার হিসেবে কনভার্ট করেছি।


3. আরও কাস্টম ডেসিরিয়ালাইজেশন লজিক প্রয়োগ

আপনি আরও জটিল কাস্টম ডেসিরিয়ালাইজেশন লজিক প্রয়োগ করতে পারেন, যেমন ফিল্ডের মান নির্ভর করে অন্য কিছু পরিবর্তন করা বা ডেটা যাচাই করা।

উদাহরণ: Date ফিল্ডের কাস্টম ডেসিরিয়ালাইজেশন

ধরা যাক, JSON ডেটাতে একটি date ফিল্ড আছে, যেটি স্ট্রিং আকারে আসছে এবং আপনাকে তা java.util.Date অবজেক্টে কনভার্ট করতে হবে:

import java.text.SimpleDateFormat;
import java.util.Date;

public class PersonWithDateDeserializer {

    public static Person deserialize(String json) {
        JsonReader reader = Boon.createReader(json);
        Map<String, Object> map = reader.read(Map.class);

        Person person = new Person();
        person.setName((String) map.get("name"));

        String ageStr = (String) map.get("age");
        if (ageStr != null) {
            person.setAge(Integer.parseInt(ageStr));
        }

        // date ফিল্ডের কাস্টম ডেসিরিয়ালাইজেশন
        String dateStr = (String) map.get("date");
        if (dateStr != null) {
            try {
                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
                Date date = formatter.parse(dateStr);
                // যেহেতু POJO তে Date ফিল্ড নেই, এটি শুধু উদাহরণ হিসেবে দেখানো হয়েছে
                System.out.println("Date: " + date);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        return person;
    }

    public static void main(String[] args) {
        String json = "{\"name\":\"John Doe\", \"age\":\"30\", \"date\":\"2024-12-18\"}";

        Person person = deserialize(json);

        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

এখানে, date ফিল্ডের মান একটি স্ট্রিং হিসেবে আসছে, এবং আমরা সেটিকে java.util.Date অবজেক্টে কনভার্ট করেছি।


সারাংশ

বুন (Boon) লাইব্রেরি ব্যবহার করে আপনি কাস্টম ডেসিরিয়ালাইজার তৈরি করতে পারেন, যা JSON ডেটাকে আপনার প্রয়োজন অনুসারে বিশেষভাবে কনভার্ট করতে সাহায্য করে। এই কাস্টম ডেসিরিয়ালাইজেশন প্রক্রিয়া আপনাকে JSON ডেটার বিভিন্ন ফরম্যাট, কনভার্শন, এবং টাইপ কাস্টিং প্রক্রিয়া নিয়ন্ত্রণ করতে সক্ষম করে। Boon.createReader() এবং Map এর মাধ্যমে JSON ডেটা পড়ে, আপনি কাস্টম লজিক প্রয়োগ করে POJO অবজেক্টে রূপান্তর করতে পারেন।

Content added By

Boon লাইব্রেরি ব্যবহার করে JSON Serialization এবং Deserialization কাস্টমাইজ করা অত্যন্ত সহজ এবং কার্যকরী। Boon JSON ডেটার সিরিয়ালাইজেশন (Java Object to JSON) এবং ডেসিরিয়ালাইজেশন (JSON to Java Object) প্রক্রিয়া সহজে সম্পাদন করতে সাহায্য করে। এই প্রক্রিয়াগুলোর কাস্টমাইজেশন করতে হলে Boon এর কিছু গুরুত্বপূর্ণ ফিচার ব্যবহার করা যায়।


JSON Serialization এবং Deserialization কাস্টমাইজেশন

1. JSON Serialization কাস্টমাইজেশন

JSON Serialization হল Java অবজেক্টকে JSON ফর্ম্যাটে রূপান্তর করার প্রক্রিয়া। Boon লাইব্রেরি ব্যবহার করে কাস্টম JSON Serialization করা যেতে পারে, যাতে Java অবজেক্টগুলির ফিল্ড নাম, ফরম্যাট বা কিছু নির্দিষ্ট বৈশিষ্ট্য কাস্টমাইজ করা যায়।

Customizing Field Name with @JsonProperty

Boon লাইব্রেরিতে @JsonProperty এনোটেশন ব্যবহার করে ফিল্ড নাম কাস্টমাইজ করা যায়। যদি আপনি Java ক্লাসের ফিল্ডের নাম পরিবর্তন করতে চান, তাহলে এই এনোটেশনটি ব্যবহার করা যেতে পারে।

উদাহরণ:

import org.boon.json.JsonFactory;
import org.boon.json.JsonMapper;
import org.boon.json.annotations.JsonProperty;

public class User {

    @JsonProperty("user_name")  // JSON এ 'user_name' হবে
    private String username;
    
    @JsonProperty("user_age")  // JSON এ 'user_age' হবে
    private int age;

    // Getter and Setter methods
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public static void main(String[] args) {
        User user = new User();
        user.setUsername("John Doe");
        user.setAge(30);

        JsonMapper mapper = JsonFactory.create();
        String json = mapper.writeValueAsString(user);

        System.out.println(json);  // Output will have user_name and user_age as keys
    }
}

আউটপুট:

{
    "user_name": "John Doe",
    "user_age": 30
}

এখানে @JsonProperty ব্যবহার করে username এবং age ফিল্ডের JSON প্রপার্টি নাম কাস্টমাইজ করা হয়েছে।

Custom Date Format for Serialization

আপনি যদি Date টাইপের ডেটা JSON এ নির্দিষ্ট ফরম্যাটে সিরিয়ালাইজ করতে চান, তবে Boon লাইব্রেরি দিয়ে এটি কাস্টমাইজ করা যেতে পারে।

import org.boon.json.JsonFactory;
import org.boon.json.JsonMapper;
import org.boon.json.annotations.JsonProperty;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Event {

    @JsonProperty("event_date")
    private Date date;

    public Event(Date date) {
        this.date = date;
    }

    public static void main(String[] args) {
        Event event = new Event(new Date());

        JsonMapper mapper = JsonFactory.create();
        
        // Custom date format
        mapper.config().setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        
        String json = mapper.writeValueAsString(event);
        System.out.println(json);  // Custom date format applied
    }
}

আউটপুট:

{
    "event_date": "2024-12-18 14:35:50"
}

এখানে SimpleDateFormat ব্যবহার করে JSON এ ডেট ফিল্ডের ফরম্যাট কাস্টমাইজ করা হয়েছে।


2. JSON Deserialization কাস্টমাইজেশন

JSON Deserialization হল JSON ডেটাকে Java অবজেক্টে রূপান্তর করার প্রক্রিয়া। Boon লাইব্রেরি ব্যবহার করে JSON ডেটার ডেসিরিয়ালাইজেশন কাস্টমাইজ করা যেতে পারে, যাতে JSON ডেটা পার্সিংয়ের সময় কিছু নির্দিষ্ট কাস্টম ফর্ম্যাট বা ডিফল্ট ভ্যালু ব্যবহার করা যায়।

Custom Constructor for Deserialization

Boon JSON ডেটাকে Java অবজেক্টে ডেসিরিয়ালাইজ করার সময় কাস্টম কনস্ট্রাক্টর ব্যবহার করতে সহায়তা করে। উদাহরণস্বরূপ, আপনি যদি JSON ডেটা ব্যবহার করে Java অবজেক্ট ইনস্ট্যান্স করতে চান, তবে কাস্টম কনস্ট্রাক্টর ব্যবহার করতে পারেন।

import org.boon.json.JsonFactory;
import org.boon.json.JsonMapper;
import org.boon.json.annotations.JsonProperty;

public class Product {

    private String name;
    private double price;

    // Custom constructor
    public Product(@JsonProperty("product_name") String name, @JsonProperty("product_price") double price) {
        this.name = name;
        this.price = price;
    }

    @Override
    public String toString() {
        return "Product{name='" + name + "', price=" + price + '}';
    }

    public static void main(String[] args) {
        String json = "{\"product_name\":\"Laptop\", \"product_price\": 999.99}";

        JsonMapper mapper = JsonFactory.create();
        Product product = mapper.readValue(json, Product.class);

        System.out.println(product);
    }
}

আউটপুট:

Product{name='Laptop', price=999.99}

এখানে, @JsonProperty এনোটেশন ব্যবহার করে কাস্টম কনস্ট্রাক্টর ব্যবহার করা হয়েছে, যাতে JSON ডেটা ফিল্ডগুলো Java অবজেক্টের কনস্ট্রাক্টরে সঠিকভাবে ম্যাপ হয়।

Handling Missing Fields during Deserialization

Boon ডেসিরিয়ালাইজেশন করার সময় যদি কোনো ফিল্ড JSON এ অনুপস্থিত থাকে, তবে এটি null প্রদান করবে। তবে, আপনি যদি কোনও মিসিং ফিল্ডের জন্য ডিফল্ট মান দিতে চান, তাহলে সেটি কাস্টমাইজ করা যেতে পারে।

import org.boon.json.JsonFactory;
import org.boon.json.JsonMapper;

public class Customer {

    private String name;
    private int age = 18;  // Default 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;
    }

    public static void main(String[] args) {
        String json = "{\"name\": \"Alice\"}";  // No 'age' field in JSON

        JsonMapper mapper = JsonFactory.create();
        Customer customer = mapper.readValue(json, Customer.class);

        System.out.println("Name: " + customer.getName());
        System.out.println("Age: " + customer.getAge());  // Default age will be used
    }
}

আউটপুট:

Name: Alice
Age: 18

এখানে, যদি age ফিল্ড JSON এ অনুপস্থিত থাকে, তবে ডিফল্ট মান 18 দেওয়া হবে।


সারাংশ

Boon লাইব্রেরির মাধ্যমে JSON Serialization এবং Deserialization কাস্টমাইজেশন খুবই সহজ এবং কার্যকরী। আপনি @JsonProperty এনোটেশন ব্যবহার করে JSON প্রপার্টির নাম কাস্টমাইজ করতে পারেন, ডেটা ফরম্যাট এবং কনস্ট্রাক্টর কাস্টমাইজ করতে পারেন, এবং JSON ডেটার মিসিং ফিল্ডে ডিফল্ট মান প্রদান করতে পারেন। Boon এর এই কাস্টমাইজেশন ফিচারগুলি JSON ডেটা পার্সিং এবং ম্যানিপুলেশনকে আরও শক্তিশালী ও নমনীয় করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...