Jackson একটি জনপ্রিয় জাভা-বেসড লাইব্রেরি যা জাভা অবজেক্টকে JSON এবং JSON কে জাভা অবজেক্টে রূপান্তর করে। একাধিক ডেট ফরম্যাট হ্যান্ডল করার জন্য @JsonFormat অ্যানোটেশন ব্যবহার করা হয়। এটি প্রোপার্টি ভ্যালু সিরিয়ালাইজ/ডিসিরিয়ালাইজ করার ফরম্যাট কনফিগার করে।
@JsonFormat-এর মূল ফিল্ডসমূহ
- shape: সিরিয়ালাইজেশনের স্ট্রাকচার (
JsonFormat.Shape.STRINGবাNUMBER। ডিফল্ট STRING)। - pattern: ডেট ফরম্যাট প্যাটার্ন (
SimpleDateFormatকমপ্যাটিবল)। সিরিয়ালাইজেশন এবং ডিসিরিয়ালাইজেশন দুটোইয়ে কাজ করে। - timezone: টাইমজোন (ডিফল্ট সিস্টেম টাইমজোন)।
উদাহরণ: একই অবজেক্টে দুটি ভিন্ন ডেট ফরম্যাট
import java.io.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonDateformatTest {
final static ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws Exception {
String json = "{\"createDate\":\"1980-12-08\"," +
"\"createDateGmt\":\"1980-12-08 3:00 PM GMT+1:00\"}";
Reader reader = new StringReader(json);
Employee employee = mapper.readValue(reader, Employee.class);
System.out.println(employee);
}
}
class Employee implements Serializable {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "IST")
private Date createDate;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm a z", timezone = "IST")
private Date createDateGmt;
// Getters, Setters, toString()...
}
আউটপুট
Employee [ createDate=Mon Dec 08 00:00:00 IST 1980, createDateGmt=Mon Dec 08 07:30:00 IST 1980 ]
ব্যাখ্যা:
createDateফিল্ডটিyyyy-MM-ddফরম্যাটে পার্স হয়েছে।createDateGmtফিল্ডটিyyyy-MM-dd HH:mm a zফরম্যাটে পার্স হয়েছে (টাইম, AM/PM, টাইমজোন সহ)।- সিরিয়ালাইজেশনের সময় একই প্যাটার্নে আউটপুট হবে।
মেভেন ডিপেন্ডেন্সি: com.fasterxml.jackson.core:jackson-databind