Custom Serializer তৈরি এবং ব্যবহারের টেকনিক

Jackson এর মাধ্যমে কাস্টম Serializer এবং Deserializer তৈরি - জ্যাকসন (Jackson) - Java Technologies

303

Jackson লাইব্রেরি ব্যবহার করে Custom Serializer তৈরি করা খুবই কার্যকর, যখন আপনার একটি Object-কে JSON-এ Serialize করার সময় কিছু কাস্টম লজিক যোগ করার প্রয়োজন হয়। নীচে Custom Serializer তৈরি এবং ব্যবহারের একটি উদাহরণ দেওয়া হলো:


১. Custom Serializer তৈরি করার ধাপসমূহ:

  1. JsonSerializer ক্লাস Extend করুন: একটি Custom Serializer ক্লাস তৈরি করতে হবে যা JsonSerializer<T> ইন্টারফেসকে ইমপ্লিমেন্ট করে।
  2. serialize মেথড Override করুন: এখানে আপনি Object-কে JSON-এ কিভাবে Serialize করবেন তা নির্ধারণ করবেন।
  3. @JsonSerialize এনোটেশন ব্যবহার করুন: কাস্টম Serializer-কে Object ফিল্ড বা ক্লাসে প্রয়োগ করতে এই এনোটেশন ব্যবহার করতে হয়।

উদাহরণ: Custom Serializer

১. একটি ক্লাস তৈরি করুন

public class User {
    private int id;
    private String name;
    private String email;

    // Constructor
    public User(int id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

২. Custom Serializer তৈরি করুন

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;

public class UserCustomSerializer extends JsonSerializer<User> {
    @Override
    public void serialize(User user, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeStartObject();
        gen.writeNumberField("userId", user.getId()); // Custom field name
        gen.writeStringField("fullName", user.getName().toUpperCase()); // Convert name to uppercase
        gen.writeStringField("contactEmail", user.getEmail()); // Custom field name
        gen.writeEndObject();
    }
}

৩. @JsonSerialize এনোটেশন ব্যবহার করে Serializer প্রয়োগ করুন

import com.fasterxml.jackson.databind.annotation.JsonSerialize;

@JsonSerialize(using = UserCustomSerializer.class)
public class User {
    // Same as above
}

৪. মেইন প্রোগ্রামে ব্যবহার

import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) {
        try {
            // Object তৈরি
            User user = new User(1, "Rahim", "rahim@example.com");

            // ObjectMapper ব্যবহার
            ObjectMapper objectMapper = new ObjectMapper();

            // Object থেকে JSON
            String jsonString = objectMapper.writeValueAsString(user);

            // JSON প্রিন্ট করুন
            System.out.println("Custom Serialized JSON: " + jsonString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

৫. আউটপুট

Custom Serialized JSON: {
  "userId": 1,
  "fullName": "RAHIM",
  "contactEmail": "rahim@example.com"
}

২. গুরুত্বপূর্ণ বিষয়:

  1. Custom Logic: কাস্টম Serializer-এ আপনি ফিল্ডের নাম পরিবর্তন, ডাটা ফরম্যাটিং, বা কিছু ডাটা বাদ দিতে পারবেন।
  2. Global Serializer: যদি একই Serializer একাধিক ক্লাস বা Object-এ ব্যবহার করতে চান, তবে আপনি SimpleModule ব্যবহার করে ObjectMapper-এ রেজিস্টার করতে পারেন।

    SimpleModule module = new SimpleModule();
    module.addSerializer(User.class, new UserCustomSerializer());
    objectMapper.registerModule(module);
    
  3. Complex Objects বা Collections: একই কৌশল ব্যবহার করে Complex Objects বা Collections-এর জন্যও Custom Serializer তৈরি করতে পারেন।

এভাবে Jackson ব্যবহার করে Custom Serializer তৈরি এবং প্রয়োগ করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...