@JsonFormat এর অন্যান্য ব্যবহারের কৌশল

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

325

Jackson-এর @JsonFormat অ্যানোটেশন তারিখ, সময়, সংখ্যা এবং অন্যান্য ধরনের ডেটা ফরম্যাটিং কাস্টমাইজ করতে ব্যবহৃত হয়। এর সাহায্যে JSON ডেটার আউটপুট এবং ইনপুটের ফরম্যাট নিয়ন্ত্রণ করা যায়। এর ব্যবহার আরও বিস্তৃত এবং বিভিন্ন ধরনের কনফিগারেশন করা সম্ভব। চলুন, @JsonFormat এর কিছু অন্যান্য কৌশল নিয়ে আলোচনা করি।


1. @JsonFormat এর মাধ্যমে Date এবং Time Formatting

Jackson @JsonFormat অ্যানোটেশন দিয়ে তারিখ এবং সময় ফরম্যাট কাস্টমাইজ করা হয়। আপনি টাইমস্ট্যাম্প, yyyy-MM-dd ফরম্যাট, বা অন্য কোনো কাস্টম প্যাটার্ন ব্যবহার করতে পারেন।

Date/Time Formatting উদাহরণ:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class Event {
    private String name;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Dhaka")
    private Date eventDate;

    // Getters and Setters
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonFormatExample {
    public static void main(String[] args) throws Exception {
        Event event = new Event();
        event.setName("Conference");
        event.setEventDate(new Date());

        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(event);

        System.out.println(json);
    }
}
JSON Output:
{
  "name": "Conference",
  "eventDate": "2024-12-21 15:30:00"
}

2. @JsonFormat এর মাধ্যমে Enum Customization

Jackson ব্যবহার করে Enum গুলোর কাস্টম ফরম্যাট তৈরি করা যায়। উদাহরণস্বরূপ, আপনি Enum এর নাম পরিবর্তন করতে পারেন বা একটি Enum value কে JSON হিসেবে একটি মানে রূপান্তর করতে পারেন।

Enum উদাহরণ:

import com.fasterxml.jackson.annotation.JsonFormat;

@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum Status {
    SUCCESS(1, "Operation Successful"),
    FAILURE(0, "Operation Failed");

    private final int code;
    private final String message;

    Status(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonFormatEnumExample {
    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(Status.SUCCESS);

        System.out.println(json);
    }
}
JSON Output:
{
  "code": 1,
  "message": "Operation Successful"
}

3. @JsonFormat এর মাধ্যমে Number Formatting

নম্বর ফরম্যাটিং কাস্টমাইজ করতে আপনি @JsonFormat এর pattern ব্যবহার করতে পারেন। এটি সংখ্যা, দশমিক স্থান, এবং কাস্টম ফরম্যাটে সংখ্যাকে JSON-এ রূপান্তর করতে সাহায্য করে।

Number Formatting উদাহরণ:

import com.fasterxml.jackson.annotation.JsonFormat;

public class Product {
    private String name;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "###,###.##")
    private double price;

    // Getters and Setters
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonFormatExample {
    public static void main(String[] args) throws Exception {
        Product product = new Product();
        product.setName("Laptop");
        product.setPrice(123456.789);

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

        System.out.println(json);
    }
}
JSON Output:
{
  "name": "Laptop",
  "price": "123,456.79"
}

4. @JsonFormat Shape নিয়ন্ত্রণ

Jackson-এর @JsonFormat এর shape প্যারামিটার দিয়ে আপনি JSON ফিল্ডের আউটপুটের আকার নিয়ন্ত্রণ করতে পারেন। এটি STRING, NUMBER, ARRAY, OBJECT, BOOLEAN ইত্যাদি শেপ নির্ধারণ করতে পারে।

@JsonFormat Shape উদাহরণ:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.List;

public class Person {
    private String name;

    @JsonFormat(shape = JsonFormat.Shape.ARRAY)
    private List<String> hobbies;

    // Getters and Setters
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.Arrays;

public class JsonFormatArrayExample {
    public static void main(String[] args) throws Exception {
        Person person = new Person();
        person.setName("Rahim");
        person.setHobbies(Arrays.asList("Reading", "Gaming", "Traveling"));

        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(person);

        System.out.println(json);
    }
}
JSON Output:
["Rahim",["Reading","Gaming","Traveling"]]

5. @JsonFormat TimeZone কাস্টমাইজেশন

আপনি @JsonFormat দিয়ে নির্দিষ্ট টাইমজোন সেট করতে পারেন, যাতে তারিখ/সময় সঠিক টাইমজোনে ফরম্যাট হয়।

TimeZone উদাহরণ:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class Event {
    private String name;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
    private Date eventDate;

    // Getters and Setters
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonFormatExample {
    public static void main(String[] args) throws Exception {
        Event event = new Event();
        event.setName("Global Conference");
        event.setEventDate(new Date());

        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(event);

        System.out.println(json);
    }
}
JSON Output:
{
  "name": "Global Conference",
  "eventDate": "2024-12-21 10:30:00"
}

6. @JsonFormat Locale কাস্টমাইজেশন

আপনি @JsonFormat ব্যবহার করে নির্দিষ্ট লোকেলও সেট করতে পারেন, যাতে সেই অঞ্চলের অনুযায়ী ফরম্যাটিং করা হয়।

Locale উদাহরণ:

import com.fasterxml.jackson.annotation.JsonFormat;

public class Price {
    private double amount;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "###,###.##", locale = "fr_FR")
    private double price;

    // Getters and Setters
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonFormatExample {
    public static void main(String[] args) throws Exception {
        Price product = new Price();
        product.setPrice(123456.789);

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

        System.out.println(json);
    }
}
JSON Output (French Locale):
{
  "price": "123 456,79"
}

  • @JsonFormat অ্যানোটেশন Jackson ব্যবহার করে Date, Time, Enum, Numbers, এবং Collections ফরম্যাট কাস্টমাইজ করতে ব্যবহৃত হয়।
  • TimeZone এবং Locale সেট করার মাধ্যমে, আপনার JSON ডেটা সঠিকভাবে localization এবং internationalization নিশ্চিত করা সম্ভব।
  • Shape প্যারামিটার ব্যবহার করে আপনি ডেটার আউটপুট শেপ কাস্টমাইজ করতে পারেন।
  • @JsonFormat অ্যানোটেশন JSON-এর ডেটা ফরম্যাটিং আরও নির্ভুল, সুবিধাজনক, এবং ইউজার-বান্ধব করে তোলে।
Content added By
Promotion

Are you sure to start over?

Loading...