কম্পিউটার টিউটোরিয়াল

জ্যাকসনে @JsonAlias ব্যবহার করে ফিল্ডের অ্যাল্টারনেটিভ নাম ডিফাইন করা

@JsonAlias অ্যানোটেশন ব্যবহার করে ডিসিরিয়ালাইজেশনের (JSON → Java Object) সময় একটি ফিল্ডের জন্য এক বা একাধিক অ্যাল্টারনেটিভ (বিকল্প) নাম ডিফাইন করা যায়। কিন্তু সিরিয়ালাইজেশনের (Java Object → JSON) সময় শুধু একচুড়া লজিক্যাল প্রপার্টি নামই ব্যবহার হয়, অ্যালিয়াসগুলো ব্যবহার হয় না।

সিনট্যাক্স

@Target(value={ANNOTATION_TYPE, FIELD, METHOD, PARAMETER})
@Retention(value=RUNTIME)
public @interface JsonAlias {
    String[] value();
}

উদাহরণ

import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
import java.io.*;

public class ObjectToJsonTest {
    public static void main(String[] args) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        Technology tech = new Technology("Java", "Oracle");
        Employee emp = new Employee(110, "Raja", tech);

        String jsonWriter = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(emp);
        System.out.println(jsonWriter);
    }
}

// Technology ক্লাস
class Technology {
    @JsonProperty("skill")
    private String skill;

    @JsonProperty("subSkill")
    @JsonAlias({"sSkill", "mySubSkill"}) // অ্যালিয়াস ডিফাইন
    private String subSkill;

    // constructors, getters, setters...
}

// Employee ক্লাস
class Employee {
    @JsonProperty("empId")
    private Integer id;

    @JsonProperty("empName")
    @JsonAlias({"ename", "myename"}) // অ্যালিয়াস ডিফাইন
    private String name;

    @JsonProperty("empTechnology")
    private Technology tech;

    // constructors, getters, setters...
}

আউটপুট (সিরিয়ালাইজেশন)

{
  "empTechnology" : {
    "skill" : "Java",
    "subSkill" : "Oracle"
  },
  "empId" : 110,
  "empName" : "Raja"
}

ব্যাখ্যা: সিরিয়ালাইজেশনে empName, skill, subSkill নামগুলো ব্যবহার হয়েছে। কিন্তু ডিসিরিয়ালাইজেশনের সময় JSON-এ ename, myename, sSkill, mySubSkill নামগুলো থাকলে সেগুলো সঠিক ফিল্ডে ম্যাপ হয়ে যাবে। এটি API ভার্সনিং বা এক্সটার্নাল সিস্টেমের সাথে ইন্টিগ্রেশনে খুব কাজে লাগে।

  1. জাভাতে JSON ফিল্ড নামের জন্য নামকরণ কনভেনশন ডিফাইন করার পদ্ধতি

  2. জাভাতে @Expose এনোটেশন ব্যবহার করে JSON-এ ফিল্ড বাদ দেওয়ার পদ্ধতি

  3. জাভাতে Jackson ব্যবহার করে JSON-এ ফিল্ড নাম পরিবর্তন করার পদ্ধতি

  4. জাভাতে Gson লাইব্রেরি ব্যবহার করে নাল ফিল্ড সিরিয়ালাইজ করার পদ্ধতি