Practical উদাহরণ সহ @JsonGetter এবং @JsonSetter এর ব্যবহার

@JsonGetter এবং @JsonSetter - জ্যাকসন অ্যানোটেশন (Jackson Annotations) - Java Technologies

303

@JsonGetter এবং @JsonSetter Jackson Annotations, যা JSON ডেটা এবং Java Object এর মধ্যে সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশনের সময় ব্যবহৃত হয়। এগুলো বিশেষত তখন ব্যবহৃত হয় যখন আপনি JSON ফিল্ড এবং Java মেথডের নাম ভিন্ন রাখতে চান।


@JsonGetter

@JsonGetter:

  • এটি সিরিয়ালাইজেশনের সময় ব্যবহার করা হয়।
  • এটি নির্দেশ করে যে কোন মেথডটি JSON প্রপার্টি হিসেবে ব্যবহৃত হবে।

@JsonSetter

@JsonSetter:

  • এটি ডেসিরিয়ালাইজেশনের সময় ব্যবহার করা হয়।
  • এটি নির্দেশ করে যে কোন মেথডটি JSON থেকে মান সেট করার জন্য ব্যবহৃত হবে।

Practical উদাহরণ

১. @JsonGetter এবং @JsonSetter এর মৌলিক ব্যবহার

import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonSetter;

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

    @JsonGetter("user_id")
    public int getId() {
        return id;
    }

    @JsonSetter("user_id")
    public void setId(int id) {
        this.id = id;
    }

    @JsonGetter("user_name")
    public String getName() {
        return name;
    }

    @JsonSetter("user_name")
    public void setName(String name) {
        this.name = name;
    }
}

JSON Input:

{
    "user_id": 1,
    "user_name": "John Doe"
}

Usage Example:

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonGetterSetterExample {
    public static void main(String[] args) throws Exception {
        String json = "{ \"user_id\": 1, \"user_name\": \"John Doe\" }";

        ObjectMapper objectMapper = new ObjectMapper();

        // JSON থেকে Object এ রূপান্তর
        User user = objectMapper.readValue(json, User.class);
        System.out.println("User Name: " + user.getName());

        // Object থেকে JSON এ রূপান্তর
        String serializedJson = objectMapper.writeValueAsString(user);
        System.out.println("Serialized JSON: " + serializedJson);
    }
}

আউটপুট:

User Name: John Doe
Serialized JSON: {"user_id":1,"user_name":"John Doe"}

২. Getter এবং Setter এর কাস্টম নাম ব্যবহার

import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonSetter;

public class Product {
    private int productId;
    private String productName;

    @JsonGetter("id")
    public int getProductId() {
        return productId;
    }

    @JsonSetter("id")
    public void setProductId(int productId) {
        this.productId = productId;
    }

    @JsonGetter("name")
    public String getProductName() {
        return productName;
    }

    @JsonSetter("name")
    public void setProductName(String productName) {
        this.productName = productName;
    }
}

JSON Input:

{
    "id": 101,
    "name": "Laptop"
}

JSON Output:

{
    "id": 101,
    "name": "Laptop"
}

৩. @JsonGetter এবং @JsonSetter ডায়নামিক ফিল্ড নামের জন্য ব্যবহার

import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonSetter;

import java.util.HashMap;
import java.util.Map;

public class DynamicUser {
    private Map<String, Object> properties = new HashMap<>();

    @JsonGetter("properties")
    public Map<String, Object> getProperties() {
        return properties;
    }

    @JsonSetter("properties")
    public void setProperties(Map<String, Object> properties) {
        this.properties = properties;
    }
}

JSON Input:

{
    "properties": {
        "age": 30,
        "location": "Dhaka"
    }
}

Usage Example:

import com.fasterxml.jackson.databind.ObjectMapper;

public class DynamicUserExample {
    public static void main(String[] args) throws Exception {
        String json = "{ \"properties\": { \"age\": 30, \"location\": \"Dhaka\" } }";

        ObjectMapper objectMapper = new ObjectMapper();

        // JSON থেকে Object
        DynamicUser user = objectMapper.readValue(json, DynamicUser.class);
        System.out.println("User Properties: " + user.getProperties());

        // Object থেকে JSON
        String serializedJson = objectMapper.writeValueAsString(user);
        System.out.println("Serialized JSON: " + serializedJson);
    }
}

আউটপুট:

User Properties: {age=30, location=Dhaka}
Serialized JSON: {"properties":{"age":30,"location":"Dhaka"}}

৪. @JsonGetter এবং @JsonSetter এর সাথে ভিন্ন ভিন্ন ফিল্ড নাম ব্যবহার

import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonSetter;

public class Employee {
    private int empId;
    private String empName;

    @JsonGetter("employee_id")
    public int getEmpId() {
        return empId;
    }

    @JsonSetter("id")
    public void setEmpId(int empId) {
        this.empId = empId;
    }

    @JsonGetter("employee_name")
    public String getEmpName() {
        return empName;
    }

    @JsonSetter("name")
    public void setEmpName(String empName) {
        this.empName = empName;
    }
}

JSON Input:

{
    "id": 2001,
    "name": "Alice"
}

JSON Output:

{
    "employee_id": 2001,
    "employee_name": "Alice"
}

  1. @JsonGetter সিরিয়ালাইজেশনের সময় ফিল্ডের নাম কাস্টমাইজ করতে ব্যবহৃত হয়।
  2. @JsonSetter ডেসিরিয়ালাইজেশনের সময় JSON ফিল্ডের নাম এবং Java ফিল্ডের মধ্যে ম্যাপিং তৈরি করতে ব্যবহৃত হয়।
  3. এগুলো REST API এবং ডেটা এক্সচেঞ্জের সময় নমনীয়তা ও কার্যকারিতা বাড়ায়।
  4. ডায়নামিক ফিল্ড বা কাস্টম নাম ব্যবহারের ক্ষেত্রে @JsonGetter এবং @JsonSetter অত্যন্ত কার্যকর।

উপযুক্ত ব্যবহার ক্ষেত্র: কাস্টম নামের JSON ফিল্ড হ্যান্ডলিং, ডায়নামিক ডেটা প্রসেসিং, এবং API রেসপন্স কাস্টমাইজেশন।

Content added By
Promotion

Are you sure to start over?

Loading...