Jackson-এ Enum Mapping এবং Complex JSON Structure নিয়ে কাজ করা খুবই সহজ এবং কার্যকর। Jackson JSON ডেটার সঙ্গে জাভার enum টাইপ এবং জটিল কাঠামো যেমন নেস্টেড অবজেক্ট, অ্যারে, বা ম্যাপ হ্যান্ডেল করতে উন্নত API সরবরাহ করে।
1. Enum Mapping
Jackson সহজেই JSON ডেটার সঙ্গে Java enum টাইপ ম্যাপ করতে পারে। এছাড়া, কাস্টম নাম বা মান ব্যবহার করতে চাইলে বিশেষ এনোটেশন ব্যবহার করা যায়।
উদাহরণ: Enum Mapping
Enum ক্লাস:
enum Status {
ACTIVE,
INACTIVE,
PENDING
}
JSON:
{
"id": 101,
"name": "John Doe",
"status": "ACTIVE"
}
কোড:
import com.fasterxml.jackson.databind.ObjectMapper;
class User {
public int id;
public String name;
public Status status;
}
public class Main {
public static void main(String[] args) throws Exception {
String json = """
{
"id": 101,
"name": "John Doe",
"status": "ACTIVE"
}
""";
ObjectMapper objectMapper = new ObjectMapper();
User user = objectMapper.readValue(json, User.class);
System.out.println("ID: " + user.id);
System.out.println("Name: " + user.name);
System.out.println("Status: " + user.status);
// Serialize back to JSON
String serializedJson = objectMapper.writeValueAsString(user);
System.out.println("Serialized JSON: " + serializedJson);
}
}
আউটপুট:
ID: 101
Name: John Doe
Status: ACTIVE
Serialized JSON: {"id":101,"name":"John Doe","status":"ACTIVE"}
Custom Enum Mapping
কাস্টম মান ব্যবহার করতে চাইলে @JsonValue এবং @JsonCreator ব্যবহার করা হয়।
কোড:
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
enum Status {
ACTIVE("active"),
INACTIVE("inactive"),
PENDING("pending");
private final String value;
Status(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
@JsonCreator
public static Status fromValue(String value) {
for (Status status : values()) {
if (status.value.equals(value)) {
return status;
}
}
throw new IllegalArgumentException("Unknown value: " + value);
}
}
2. Complex JSON Structure
Jackson জটিল JSON কাঠামো যেমন নেস্টেড অবজেক্ট, লিস্ট, এবং ম্যাপ হ্যান্ডেল করতে সক্ষম।
উদাহরণ: Complex JSON Structure
JSON:
{
"id": 101,
"name": "John Doe",
"address": {
"city": "Dhaka",
"zip": "1212"
},
"skills": ["Java", "Spring", "Jackson"],
"metadata": {
"createdBy": "admin",
"updatedBy": "editor"
}
}
কোড:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
import java.util.Map;
class Address {
public String city;
public String zip;
}
class User {
public int id;
public String name;
public Address address;
public List<String> skills;
public Map<String, String> metadata;
}
public class Main {
public static void main(String[] args) throws Exception {
String json = """
{
"id": 101,
"name": "John Doe",
"address": {
"city": "Dhaka",
"zip": "1212"
},
"skills": ["Java", "Spring", "Jackson"],
"metadata": {
"createdBy": "admin",
"updatedBy": "editor"
}
}
""";
ObjectMapper objectMapper = new ObjectMapper();
User user = objectMapper.readValue(json, User.class);
// Printing user details
System.out.println("ID: " + user.id);
System.out.println("Name: " + user.name);
System.out.println("City: " + user.address.city);
System.out.println("Skills: " + user.skills);
System.out.println("Metadata: " + user.metadata);
// Serialize back to JSON
String serializedJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(user);
System.out.println("Serialized JSON:\n" + serializedJson);
}
}
আউটপুট:
ID: 101
Name: John Doe
City: Dhaka
Skills: [Java, Spring, Jackson]
Metadata: {createdBy=admin, updatedBy=editor}
Serialized JSON:
{
"id": 101,
"name": "John Doe",
"address": {
"city": "Dhaka",
"zip": "1212"
},
"skills": ["Java", "Spring", "Jackson"],
"metadata": {
"createdBy": "admin",
"updatedBy": "editor"
}
}
Key Features:
- Enum Mapping:
- Enum এর স্ট্রিং ম্যানিপুলেশন সহজ।
- কাস্টম ভ্যালু (যেমন "active") সেট করা যায়।
- Complex JSON Structure:
- নেস্টেড অবজেক্ট এবং অ্যারে সহজেই হ্যান্ডেল করা যায়।
- Dynamic JSON এর জন্য ম্যাপ ব্যবহার করা হয়।
ব্যবহারিক ক্ষেত্র:
- API ডেভেলপমেন্ট যেখানে Enum এবং জটিল JSON কাঠামো কাজ করে।
- ডাটা প্রসেসিং এবং JSON থেকে Java Object Mapping।
এই পদ্ধতিগুলো ব্যবহার করে সহজেই Enum এবং জটিল JSON কাঠামো পরিচালনা করা যায়।
Read more