Complex Date Format কনভার্সন

Date এবং Time Object হ্যান্ডল করা - জিসন (Gson) - Java Technologies

332

Gson লাইব্রেরি ব্যবহার করে JSON ডেটার মধ্যে কাস্টম ডেট ফরম্যাট কনভার্ট (সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ) করার জন্য আপনি JsonSerializer এবং JsonDeserializer ইন্টারফেস ব্যবহার করতে পারেন। এটি ব্যবহার করে আপনি জটিল বা কাস্টম ডেট ফরম্যাট যেমন yyyy-MM-dd HH:mm:ss বা অন্য যেকোনো ফরম্যাটে ডেটা কনভার্ট করতে পারবেন।

উদাহরণ:

ধরা যাক, আমাদের একটি Date ফিল্ড রয়েছে, এবং আমরা চাই সেটি কাস্টম ফরম্যাটে JSON এ সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ হোক।

1. ডেট টাইপে কাস্টম ফরম্যাট (JsonSerializer এবং JsonDeserializer ব্যবহার করে)

Maven ডিপেনডেন্সি:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.8</version>
</dependency>

কাস্টম ডেট ফরম্যাটের জন্য উদাহরণ:

import com.google.gson.*;
import com.google.gson.annotations.SerializedName;
import java.lang.reflect.Type;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

class Person {
    private String name;

    @SerializedName("birth_date")
    private Date birthDate;

    // Constructor
    public Person(String name, Date birthDate) {
        this.name = name;
        this.birthDate = birthDate;
    }

    // Getter and Setter methods
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(Date birthDate) {
        this.birthDate = birthDate;
    }

    @Override
    public String toString() {
        return "Person{name='" + name + "', birthDate=" + birthDate + "}";
    }
}

class DateSerializer implements JsonSerializer<Date> {
    private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    public JsonElement serialize(Date date, Type typeOfSrc, JsonSerializationContext context) {
        return new JsonPrimitive(dateFormat.format(date));  // Convert Date to custom string format
    }
}

class DateDeserializer implements JsonDeserializer<Date> {
    private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
        try {
            return dateFormat.parse(json.getAsString());  // Convert string to Date using custom format
        } catch (ParseException e) {
            throw new JsonParseException("Invalid date format", e);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        // Person object with a Date
        Person person = new Person("John", new Date());

        // Gson with custom serializer and deserializer for Date
        Gson gson = new GsonBuilder()
                        .registerTypeAdapter(Date.class, new DateSerializer())
                        .registerTypeAdapter(Date.class, new DateDeserializer())
                        .create();

        // Serialize the Person object to JSON
        String json = gson.toJson(person);
        System.out.println("Serialized JSON: " + json);

        // Deserialize back to a Person object
        Person deserializedPerson = gson.fromJson(json, Person.class);
        System.out.println("Deserialized Person: " + deserializedPerson);
    }
}

ব্যাখ্যা:

  1. DateSerializer এবং DateDeserializer: এই দুটি ক্লাসে আমরা কাস্টম ডেট ফরম্যাটের জন্য SimpleDateFormat ব্যবহার করেছি। DateSerializer ডেটাকে নির্দিষ্ট ফরম্যাটে স্ট্রিং হিসেবে কনভার্ট করে এবং DateDeserializer সেই কাস্টম ফরম্যাট স্ট্রিং থেকে Date অবজেক্টে কনভার্ট করে।
  2. GsonBuilder: GsonBuilder ব্যবহার করে আমরা registerTypeAdapter মেথডের মাধ্যমে কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার যুক্ত করেছি। এটি নিশ্চিত করে যে, যখন Date টাইপের ডেটা JSON এ সিরিয়ালাইজ বা ডেসিরিয়ালাইজ হয়, তখন কাস্টম ফরম্যাটটি ব্যবহার হবে।

আউটপুট:

Serialized JSON (সিরিয়ালাইজড JSON):

{"name":"John","birth_date":"2024-12-19 12:45:00"}

Deserialized Person (ডেসিরিয়ালাইজড অবজেক্ট):

Person{name='John', birthDate=Wed Dec 19 12:45:00 GMT 2024}

2. অন্য কাস্টম ডেট ফরম্যাট:

ধরা যাক আপনি yyyy/MM/dd ফরম্যাট ব্যবহার করতে চান। কেবলমাত্র SimpleDateFormat এর ফরম্যাট পরিবর্তন করুন:

private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");

এভাবে আপনি যেকোনো কাস্টম ডেট ফরম্যাট JSON ডেটাতে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে পারেন।

3. কাস্টম টাইমজোন (TimeZone) ব্যবহার করা:

যদি আপনি টাইমজোনের সাথে কাজ করতে চান, তাহলে SimpleDateFormat এর সাথে setTimeZone মেথড ব্যবহার করতে পারেন:

dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));

সারাংশ:

  • Gson লাইব্রেরির মাধ্যমে আপনি কাস্টম ডেট ফরম্যাট ব্যবহার করতে পারেন ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে।
  • কাস্টম সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার তৈরি করে আপনি যে কোনো কাস্টম ডেট ফরম্যাট পরিচালনা করতে পারবেন।
  • SimpleDateFormat ব্যবহার করে কাস্টম ডেট ফরম্যাট এবং টাইমজোনে ডেটা প্রক্রিয়া করা সম্ভব।
Content added By
Promotion

Are you sure to start over?

Loading...