Jackson একটি শক্তিশালী লাইব্রেরি যা JSON ডেটা ফরম্যাটকে Java objects এ এবং Java objects কে JSON ফরম্যাটে রূপান্তর করতে সাহায্য করে। এই প্রক্রিয়া Deserialization নামে পরিচিত, যেখানে JSON স্ট্রিং বা ফাইলকে Java object এ রূপান্তর করা হয়।
ObjectMapper Jackson এর সবচেয়ে গুরুত্বপূর্ণ ক্লাস যা JSON to Java Object (Deserialization) এবং Java Object to JSON (Serialization) এর কাজ পরিচালনা করে।
এই নিবন্ধে, আমরা ObjectMapper ব্যবহার করে JSON থেকে Java Object তে রূপান্তর করার প্রক্রিয়া (Deserialization) নিয়ে বিস্তারিত আলোচনা করব।
1. Jackson ObjectMapper Overview
ObjectMapper হল Jackson লাইব্রেরির প্রধান ক্লাস যা JSON ডেটা এবং Java objects এর মধ্যে মুভমেন্ট করে। এটি ডেটাকে JSON ফরম্যাটে রূপান্তর (Serialization) এবং JSON থেকে Java object এ রূপান্তর (Deserialization) করতে ব্যবহৃত হয়।
Deserialization: JSON ফাইল বা স্ট্রিংকে Java object এ রূপান্তর করা।
Serialization: Java object কে JSON ফরম্যাটে রূপান্তর করা।
2. JSON থেকে Java Object এ কনভার্ট (Deserialization)
Deserialization হল সেই প্রক্রিয়া যেখানে JSON ডেটাকে Java object এ রূপান্তর করা হয়। Jackson এর ObjectMapper ক্লাসের মাধ্যমে এই কাজটি সহজে করা যায়।
2.1. Deserialization Example: JSON to Java Object
ধরা যাক আপনার কাছে একটি JSON স্ট্রিং রয়েছে:
{
"name": "John",
"age": 30,
"email": "john.doe@example.com"
}
এখন আপনি এই JSON ডেটাকে Java Object এ রূপান্তর করতে চান।
Step 1: Java Class তৈরি করা
প্রথমে আপনাকে একটি Java class তৈরি করতে হবে যার মধ্যে সেই JSON ফিল্ডগুলো থাকবে। এই ক্ষেত্রে, JSON ফিল্ডগুলির সাথে মিল রেখে Person ক্লাস তৈরি করা হলো:
public class Person {
private String name;
private int age;
private String email;
// Getter and Setter methods
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Step 2: Jackson এর ObjectMapper ব্যবহার করা
এখন, ObjectMapper ব্যবহার করে JSON স্ট্রিংকে Person ক্লাসের একটি Java object এ রূপান্তর করা যাবে।
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
// JSON string
String json = "{\"name\":\"John\", \"age\":30, \"email\":\"john.doe@example.com\"}";
// Create ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
try {
// Deserialize JSON string to Java object
Person person = objectMapper.readValue(json, Person.class);
// Print Java object data
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
System.out.println("Email: " + person.getEmail());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output:
Name: John
Age: 30
Email: john.doe@example.com
Explanation:
objectMapper.readValue(json, Person.class)মেথডটি JSON স্ট্রিংjsonকে Person ক্লাসে রূপান্তরিত করেছে।- Person ক্লাসে থাকা name, age, এবং email ফিল্ডগুলির মান JSON স্ট্রিং থেকে নেওয়া হয়েছে।
3. JSON ফাইল থেকে Java Object এ Deserialization
আপনি যদি JSON স্ট্রিং এর পরিবর্তে একটি JSON ফাইল থেকে ডেটা রিড করতে চান, তবে সেটিও খুব সহজ।
Example: JSON File to Java Object Conversion
ধরা যাক, আপনার একটি person.json নামের ফাইল রয়েছে যার মধ্যে নিম্নলিখিত JSON ডেটা রয়েছে:
{
"name": "Alice",
"age": 25,
"email": "alice.smith@example.com"
}
Step 1: JSON ফাইল থেকে Java Object এ রূপান্তর করা
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
public class Main {
public static void main(String[] args) {
// Create ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
try {
// Read JSON from file and convert to Java object
Person person = objectMapper.readValue(new File("person.json"), Person.class);
// Print Java object data
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
System.out.println("Email: " + person.getEmail());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output:
Name: Alice
Age: 25
Email: alice.smith@example.com
Explanation:
- এখানে
objectMapper.readValue(new File("person.json"), Person.class)মেথড ব্যবহার করে JSON ফাইলটি পড়ে এবং তা Person ক্লাসের Java object এ রূপান্তরিত করেছে।
4. Jackson ObjectMapper এর অন্যান্য ফিচারসমূহ
- Handling Null Values: Jackson
nullভ্যালু গুলি ডিফল্টভাবে মান্য করে। তবে আপনি যদি চান যেnullভ্যালু গুলি JSON থেকে Java object এ ডেসিরিয়ালাইজ না হোক, তবে@JsonInclude(JsonInclude.Include.NON_NULL)অ্যানোটেশন ব্যবহার করতে পারেন। Custom Deserialization: আপনি যদি JSON ডেটা থেকে Java object এ কাস্টমভাবে রূপান্তর করতে চান, তবে আপনি Jackson এর কাস্টম deserializer ব্যবহার করতে পারেন। যেমন:
public class PersonDeserializer extends JsonDeserializer<Person> { @Override public Person deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { JsonNode node = p.getCodec().readTree(p); String name = node.get("name").asText(); int age = node.get("age").asInt(); String email = node.get("email").asText(); return new Person(name, age, email); } }Date and Time Formatting: Jackson
@JsonFormatঅ্যানোটেশন ব্যবহার করে তারিখ এবং সময়ের ফরম্যাট কাস্টমাইজ করতে সহায়তা করে।@JsonFormat(pattern="yyyy-MM-dd") private Date birthDate;- Ignore Unknown Properties: যদি আপনার JSON ডেটাতে অতিরিক্ত প্রপার্টি থাকে যা Java object এ নেই, তবে আপনি @JsonIgnoreProperties(ignoreUnknown = true) ব্যবহার করে সেগুলি উপেক্ষা করতে পারেন।
Jackson ObjectMapper হল একটি শক্তিশালী টুল যা সহজেই JSON ডেটাকে Java objects এ রূপান্তর (Deserialization) এবং Java objects কে JSON এ রূপান্তর (Serialization) করতে সহায়তা করে। এটি data binding, streaming, এবং tree model এর মাধ্যমে JSON ডেটা প্রক্রিয়া করা সহজ করে তোলে। Jackson এর সাহায্যে আপনি দ্রুত এবং কার্যকরভাবে JSON থেকে Java object এ রূপান্তর করতে পারবেন এবং কোডের কার্যকারিতা এবং ব্যাবহারযোগ্যতা বাড়াতে পারবেন।
Read more