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);
}
}
ব্যাখ্যা:
DateSerializerএবংDateDeserializer: এই দুটি ক্লাসে আমরা কাস্টম ডেট ফরম্যাটের জন্যSimpleDateFormatব্যবহার করেছি।DateSerializerডেটাকে নির্দিষ্ট ফরম্যাটে স্ট্রিং হিসেবে কনভার্ট করে এবংDateDeserializerসেই কাস্টম ফরম্যাট স্ট্রিং থেকেDateঅবজেক্টে কনভার্ট করে।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ব্যবহার করে কাস্টম ডেট ফরম্যাট এবং টাইমজোনে ডেটা প্রক্রিয়া করা সম্ভব।
Read more