Jackson হল একটি জনপ্রিয় Java লাইব্রেরি যা JSON ডেটা প্রসেসিং (পার্সিং এবং জেনারেশন) এর জন্য ব্যবহৃত হয়। Jackson এর মাধ্যমে আপনি JSON ডেটাকে Java Objects এ কনভার্ট (ডেসিরিয়ালাইজ) এবং Java Objects কে JSON ফর্ম্যাটে (সিরিয়ালাইজ) কনভার্ট করতে পারেন।
Jackson লাইব্রেরি ব্যবহারের জন্য, Maven প্রজেক্টে Jackson এর ডিপেনডেন্সি যোগ করতে হয়। এই টিউটোরিয়ালে আপনি শিখবেন কিভাবে Maven প্রজেক্টে Jackson অন্তর্ভুক্ত করবেন এবং JSON ডেটা প্রসেস করবেন।
Step 1: Jackson এর জন্য Maven ডিপেনডেন্সি যোগ করা
Jackson লাইব্রেরি Maven প্রজেক্টে অন্তর্ভুক্ত করার জন্য, আপনাকে Jackson এর প্রয়োজনীয় ডিপেনডেন্সি আপনার pom.xml ফাইলে যোগ করতে হবে। Jackson সাধারণত তিনটি মডিউলে বিভক্ত:
- jackson-databind: JSON ডেটা প্রসেসিংয়ের জন্য।
- jackson-core: JSON স্ট্রিমিং API প্রদান করে।
- jackson-annotations: Jackson এর জন্য অ্যানোটেশন প্রদান করে।
আপনি শুধু jackson-databind যোগ করলেই JSON সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন কাজ করবে, তবে আপনি অন্যান্য মডিউলগুলোও ইনস্টল করতে পারেন।
Maven ডিপেনডেন্সি উদাহরণ:
<dependencies>
<!-- Jackson Databind (includes core and annotations) -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version>
</dependency>
<!-- Jackson Annotations (optional, for annotations support) -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.13.0</version>
</dependency>
<!-- Jackson Core (optional, for streaming API) -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.0</version>
</dependency>
</dependencies>
Explanation:
- jackson-databind: এই ডিপেনডেন্সি JSON সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন করার জন্য প্রয়োজন।
- jackson-annotations: এই ডিপেনডেন্সিটি Jackson এর অ্যানোটেশন সাপোর্ট প্রদান করে, যেমন
@JsonProperty,@JsonIgnoreইত্যাদি। - jackson-core: JSON স্ট্রিমিং API এর জন্য দরকারি।
Step 2: Jackson ব্যবহার করে JSON ডেটা প্রসেস করা
Jackson ব্যবহার করে JSON ডেটা প্রসেস করার জন্য, আপনি JSON ডেটাকে Java Object এ এবং Java Object কে JSON এ কনভার্ট করতে পারবেন। নিচে কিছু উদাহরণ দেয়া হলো।
Java Object থেকে JSON সিরিয়ালাইজ করা
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
try {
// Creating an object to serialize
User user = new User("John", 25);
// ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
// Convert Java object to JSON string
String json = objectMapper.writeValueAsString(user);
// Print the JSON string
System.out.println(json);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class User {
private String name;
private int age;
// Constructor
public User(String name, int age) {
this.name = name;
this.age = age;
}
// Getters and Setters
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;
}
}
Output:
{"name":"John","age":25}
Explanation:
- ObjectMapper.writeValueAsString(): এটি Java Object কে JSON String এ কনভার্ট করতে ব্যবহৃত হয়।
JSON থেকে Java Object ডেসিরিয়ালাইজ করা
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
try {
// JSON string
String json = "{\"name\":\"John\",\"age\":25}";
// ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
// Convert JSON string to Java object
User user = objectMapper.readValue(json, User.class);
// Print the Java object
System.out.println("Name: " + user.getName());
System.out.println("Age: " + user.getAge());
} catch (Exception e) {
e.printStackTrace();
}
}
}
class User {
private String name;
private int age;
// Getters and Setters
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;
}
}
Output:
Name: John
Age: 25
Explanation:
- ObjectMapper.readValue(): এটি JSON String কে Java Object এ ডেসিরিয়ালাইজ করতে ব্যবহৃত হয়।
Step 3: Jackson এর অ্যানোটেশন ব্যবহার করা
Jackson অ্যানোটেশনগুলির মাধ্যমে আপনি JSON ডেটাকে কাস্টমাইজ করতে পারেন, যেমন: কোন ফিল্ড JSON এর মধ্যে থাকবে, কোন ফিল্ডকে উপেক্ষা করতে হবে ইত্যাদি।
অ্যানোটেশন উদাহরণ
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
try {
// Creating an object to serialize
User user = new User("John", 25, "12345");
// ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
// Convert Java object to JSON string
String json = objectMapper.writeValueAsString(user);
// Print the JSON string
System.out.println(json);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class User {
private String name;
private int age;
@JsonIgnore
private String password;
public User(String name, int age, String password) {
this.name = name;
this.age = age;
this.password = password;
}
@JsonProperty("user_name")
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;
}
}
Output:
{"user_name":"John","age":25}
Explanation:
- @JsonProperty: এটি ফিল্ড বা মেথডের নাম কাস্টমাইজ করে JSON এর মধ্যে।
- @JsonIgnore: এটি নির্দিষ্ট ফিল্ডকে JSON এর মধ্যে উপেক্ষা করে (এই ক্ষেত্রে password ফিল্ডটি JSON আউটপুটে থাকবে না)।
Step 4: JSON Array প্রসেসিং
Jackson JSON Array বা List কে Java Collection এ কনভার্ট এবং Java Collection কে JSON Array তে কনভার্ট করতে পারে।
JSON Array থেকে Java List ডেসিরিয়ালাইজ
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
import java.util.List;
public class Main {
public static void main(String[] args) {
try {
// JSON array string
String jsonArray = "[{\"name\":\"John\",\"age\":25}, {\"name\":\"Jane\",\"age\":30}]";
// ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
// Convert JSON array to List of User objects
List<User> users = objectMapper.readValue(jsonArray, new TypeReference<List<User>>() {});
// Print users
for (User user : users) {
System.out.println("Name: " + user.getName() + ", Age: " + user.getAge());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class User {
private String name;
private int age;
// Getters and Setters
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;
}
}
Output:
Name: John, Age: 25
Name: Jane, Age: 30
Jackson একটি শক্তিশালী JSON প্রসেসিং লাইব্রেরি যা JSON ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে সাহায্য করে। Maven এর মাধ্যমে Jackson লাইব্রেরি অন্তর্ভুক্ত করে আপনি Java অ্যাপ্লিকেশনে JSON ডেটা পরিচালনা করতে পারবেন।
- Maven Dependency যোগ করার মাধ্যমে Jackson আপনার প্রজেক্টে সহজেই অন্তর্ভুক্ত করা যাবে।
- ObjectMapper এর মাধ্যমে JSON ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করা যাবে।
- Jackson এর annotations দিয়ে JSON ডেটা কাস্টমাইজ করা যাবে।
Jackson লাইব্রেরি Java ডেভেলপারদের জন্য একটি অপরিহার্য টুল, যা JSON ডেটা প্রসেসিংয়ের কাজ অনেক সহজ এবং দ্রুত করে তোলে।
Read more