JSON properties এর জন্য alternate names ব্যবহার

@JsonAlias Annotation - জ্যাকসন অ্যানোটেশন (Jackson Annotations) - Java Technologies

341

Jackson এর মাধ্যমে JSON প্রপার্টি নাম কাস্টমাইজ করা সম্ভব এবং কখনও কখনও একাধিক নাম ব্যবহার করা প্রয়োজন হতে পারে। উদাহরণস্বরূপ, যদি JSON-এর একটি প্রপার্টি একটি নির্দিষ্ট নাম ব্যবহার করে, কিন্তু Java ক্লাসে অন্য নাম ব্যবহার করা হয়, অথবা যদি একই প্রপার্টির জন্য একাধিক নাম সমর্থন করতে হয়, তখন alternate names ব্যবহার করা প্রয়োজন।

Jackson-এ @JsonProperty এবং @JsonAlias অ্যানোটেশন ব্যবহার করে আপনি JSON properties এর জন্য alternate names নির্ধারণ করতে পারেন।


1. @JsonProperty এর মাধ্যমে Alternate Names

Jackson-এর @JsonProperty অ্যানোটেশন ব্যবহার করে আপনি JSON প্রপার্টির নাম কাস্টমাইজ করতে পারেন। পাশাপাশি, একটি ফিল্ডের জন্য একাধিক নাম বা alternative names ব্যবহার করতে পারেন, তবে এর জন্য @JsonAlias অ্যানোটেশন ব্যবহৃত হয়।


2. @JsonAlias অ্যানোটেশন

@JsonAlias অ্যানোটেশনটি Jackson 2.12 এ যোগ করা হয়েছে এবং এটি একাধিক নামকে একই প্রপার্টির জন্য সমর্থন করতে ব্যবহৃত হয়। এর সাহায্যে, আপনি JSON-এ একাধিক ফিল্ড নামের বিকল্প নাম যুক্ত করতে পারেন, যাতে ঐ ফিল্ডটি একাধিক নাম থেকে মান গ্রহণ করতে পারে।


@JsonAlias ব্যবহার করার উদাহরণ

উদাহরণ 1: একাধিক alternate names এর জন্য

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;

public class User {
    @JsonProperty("user_id")
    private int id;

    @JsonAlias({"full_name", "username"})
    private String name;

    @JsonProperty("email_address")
    private String email;

    // Constructors
    public User() {}

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

Serialization Example:

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonAliasExample {
    public static void main(String[] args) throws Exception {
        String json = "{\"full_name\":\"Rahim\", \"user_id\":1, \"email_address\":\"rahim@example.com\"}";

        ObjectMapper mapper = new ObjectMapper();
        User user = mapper.readValue(json, User.class);

        System.out.println("User ID: " + user.getId());
        System.out.println("User Name: " + user.getName());
        System.out.println("User Email: " + user.getEmail());
    }
}

JSON Input:

{
  "full_name": "Rahim",
  "user_id": 1,
  "email_address": "rahim@example.com"
}

Output:

User ID: 1
User Name: Rahim
User Email: rahim@example.com

এখানে, full_name এবং username উভয়ই name ফিল্ডে মান প্রদান করতে সক্ষম। এটি alternate names সমর্থন করছে।


3. @JsonProperty এবং @JsonAlias একত্রে ব্যবহার

যদি আপনি একটি JSON প্রপার্টির জন্য একটি কাস্টম নাম এবং একটি বা তার বেশি alternate names ব্যবহার করতে চান, তবে আপনি @JsonProperty এবং @JsonAlias একসাথে ব্যবহার করতে পারেন।

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Employee {
    @JsonProperty("employee_id")
    private int id;

    @JsonAlias({"first_name", "fname"})
    private String firstName;

    @JsonAlias({"last_name", "lname"})
    private String lastName;

    // Constructors
    public Employee() {}

    public Employee(int id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

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

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

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

Serialization Example:

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonAliasEmployeeExample {
    public static void main(String[] args) throws Exception {
        String json = "{\"first_name\":\"Rahim\", \"lname\":\"Khan\", \"employee_id\":101}";

        ObjectMapper mapper = new ObjectMapper();
        Employee employee = mapper.readValue(json, Employee.class);

        System.out.println("Employee ID: " + employee.getId());
        System.out.println("Employee First Name: " + employee.getFirstName());
        System.out.println("Employee Last Name: " + employee.getLastName());
    }
}

JSON Input:

{
  "first_name": "Rahim",
  "lname": "Khan",
  "employee_id": 101
}

Output:

Employee ID: 101
Employee First Name: Rahim
Employee Last Name: Khan

এখানে, first_name এবং fname দুটোই firstName ফিল্ডে মান প্রদান করতে সক্ষম। একইভাবে, last_name এবং lname দুটোই lastName ফিল্ডে মান প্রদান করতে সক্ষম।


@JsonAlias ব্যবহার করার সুবিধা

  1. Multiple Field Names Support:
    • JSON ফাইলের বিভিন্ন নাম থেকে একাধিক মান পড়ার জন্য সহায়ক।
  2. Backward Compatibility:
    • যদি API-এর নাম পরিবর্তিত হয় তবে নতুন নামের পাশাপাশি পুরনো নামও সমর্থন করতে পারেন।
  3. Flexibility:
    • Jackson এর মাধ্যমে একাধিক নাম ম্যানেজ করা সহজ হয়ে যায়, বিশেষত যখন JSON ফরম্যাটে পরিবর্তন আসে।
  4. Improved Data Mapping:
    • একাধিক JSON ফিল্ড নাম থেকে মান মেলে ফেলা সহজ হয়, যেহেতু ফিল্ড নামগুলি ভিন্ন হতে পারে।

  • @JsonAlias একটি শক্তিশালী টুল যা JSON এর জন্য একাধিক বিকল্প নাম (alternate names) সমর্থন করতে সক্ষম।
  • @JsonProperty এবং @JsonAlias ব্যবহার করে JSON প্রপার্টির জন্য একাধিক নাম সংজ্ঞায়িত করা যায়, যা ডিজাইন পরিবর্তন বা ব্যাকওয়ার্ড কমপ্যাটিবিলিটি নিশ্চিত করে।
  • Jackson ব্যবহার করে আপনি JSON ফরম্যাটে উন্নত কাস্টমাইজেশন এবং ফিল্ড ম্যানেজমেন্ট করতে পারবেন।

এটি আপনার Java অ্যাপ্লিকেশন এবং API ডেভেলপমেন্টে JSON ফিল্ড ম্যানেজমেন্ট আরও সহজ এবং কার্যকর করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...