Java Technologies Custom Deserializer এবং Serializer তৈরি করা গাইড ও নোট

275

Jackson এর মাধ্যমে Custom Serializer এবং Custom Deserializer তৈরি করা খুবই কার্যকর যখন আপনি JSON-এ ডেটা কাস্টম ফরম্যাটে সেভ বা রিড করতে চান। এই প্রক্রিয়া আপনার ডেটা প্রসেসিংয়ের জন্য বেশি নিয়ন্ত্রণ প্রদান করে। Jackson আপনাকে একটি Custom Serializer এবং Custom Deserializer তৈরি করার সুবিধা দেয়, যা আপনার নিজের প্রয়োজন অনুযায়ী JSON ডেটা কাস্টমাইজ করতে সহায়ক।


Custom Serializer

Jackson-এ Custom Serializer তৈরি করার জন্য আপনাকে JsonSerializer<T> ক্লাস ইমপ্লিমেন্ট করতে হবে। এই ক্লাসে, আপনি serialize() মেথডে আপনার কাস্টম লজিক প্রয়োগ করবেন, যা JSON এ রূপান্তর করার সময় কাজ করবে।

Custom Serializer Example

ধরা যাক, আমাদের একটি Product ক্লাস আছে, এবং আমরা তার price ফিল্ডকে কাস্টম ফরম্যাটে JSON এ রাখতে চাই (যেমন: "Price: $123.45" আকারে)।

Step 1: 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 ProductSerializer extends JsonSerializer<Product> {

    @Override
    public void serialize(Product product, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeStartObject();
        gen.writeStringField("name", product.getName());
        gen.writeStringField("price", "Price: $" + product.getPrice());
        gen.writeEndObject();
    }
}
Step 2: Product Class এ Custom Serializer যুক্ত করা
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

public class Product {
    private String name;
    private double price;

    // Constructors, Getters, and Setters

    @JsonSerialize(using = ProductSerializer.class)
    public double getPrice() {
        return price;
    }
}
Step 3: Serializer ব্যবহার করে JSON তৈরি করা
import com.fasterxml.jackson.databind.ObjectMapper;

public class CustomSerializerExample {
    public static void main(String[] args) throws Exception {
        Product product = new Product("Laptop", 999.99);

        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(product);

        System.out.println(json);
    }
}
Output:
{
  "name": "Laptop",
  "price": "Price: $999.99"
}

এখানে, ProductSerializer ক্লাসটি price ফিল্ডটি কাস্টম ফরম্যাটে JSON এ পরিণত করে।


Custom Deserializer

Custom Deserializer তৈরি করার জন্য, আপনি JsonDeserializer<T> ক্লাস ইমপ্লিমেন্ট করবেন এবং deserialize() মেথডে কাস্টম ডেসিরিয়ালাইজেশন লজিক প্রয়োগ করবেন। এটি JSON থেকে Java Object তৈরি করার জন্য ব্যবহার হয়।

Custom Deserializer Example

ধরা যাক, আমরা একটি Product অবজেক্ট ডেসিরিয়ালাইজ করতে চাই, যেখানে price ফিল্ডটি "Price: $999.99" এর মত স্ট্রিং ফরম্যাটে থাকবে। আমাদের একটি কাস্টম ডেসিরিয়ালাইজার তৈরি করতে হবে যা এই ফরম্যাটে স্ট্রিং নিয়ে সঠিক ডবল ভ্যালুতে রূপান্তর করবে।

Step 1: Custom Deserializer তৈরি করা
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

import java.io.IOException;

public class ProductDeserializer extends JsonDeserializer<Product> {

    @Override
    public Product deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        String value = p.getText();  // JSON থেকে value নেয়া

        // Price string parsing: "Price: $999.99" থেকে "999.99" বের করা
        String priceString = value.replace("Price: $", "");
        double price = Double.parseDouble(priceString);

        // Product object তৈরি এবং price সেট করা
        Product product = new Product();
        product.setPrice(price);
        return product;
    }
}
Step 2: Product Class-এ Custom Deserializer যুক্ত করা
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

public class Product {
    private String name;
    private double price;

    // Constructors, Getters, and Setters

    @JsonDeserialize(using = ProductDeserializer.class)
    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
Step 3: Custom Deserializer ব্যবহার করে JSON থেকে Object তৈরি করা
import com.fasterxml.jackson.databind.ObjectMapper;

public class CustomDeserializerExample {
    public static void main(String[] args) throws Exception {
        String json = "{\"name\":\"Laptop\",\"price\":\"Price: $999.99\"}";

        ObjectMapper objectMapper = new ObjectMapper();
        Product product = objectMapper.readValue(json, Product.class);

        System.out.println("Name: " + product.getName());
        System.out.println("Price: " + product.getPrice());
    }
}
Output:
Name: Laptop
Price: 999.99

এখানে, ProductDeserializer ক্লাসটি price ফিল্ডের কাস্টম ডেসিরিয়ালাইজেশন করতে সাহায্য করেছে, যেখানে "Price: $999.99" স্ট্রিং থেকে মূল মূল্য বের করে ডবল টাইপে রূপান্তর করা হয়েছে।


Custom Serializer এবং Deserializer এর সুবিধা

  1. Complex Data Handling:
    • JSON ডেটা প্রক্রিয়াকরণের সময় জটিল বা কাস্টম লজিক প্রয়োগ করার জন্য উপকারী।
  2. Improved Control:
    • Java Object থেকে JSON এবং JSON থেকে Java Object এ কাস্টম কনভার্সন পরিচালনার জন্য অধিক নিয়ন্ত্রণ প্রদান করে।
  3. Flexibility:
    • JSON ফরম্যাট বা Java অবজেক্টের কাঠামো পরিবর্তন হলেও আপনার কাস্টম লজিকের মাধ্যমে সেগুলো সঠিকভাবে প্রক্রিয়া করা সম্ভব।

  1. Custom Serializer এবং Custom Deserializer Jackson এর মাধ্যমে JSON Serialization এবং Deserialization কাস্টমাইজ করার জন্য খুবই উপকারী।
  2. JsonSerializer<T> এবং JsonDeserializer<T> ক্লাস ব্যবহার করে আপনি সহজেই কাস্টম ফরম্যাট তৈরি করতে পারেন।
  3. Jackson-এর Annotations (যেমন: @JsonSerialize এবং @JsonDeserialize) এর মাধ্যমে আপনি নির্দিষ্ট ফিল্ড বা ক্লাসে কাস্টম Serializer এবং Deserializer প্রয়োগ করতে পারবেন।
Content added By
Promotion

Are you sure to start over?

Loading...