Jackson লাইব্রেরি ব্যবহার করে JSON Tree থেকে ডেটা extract এবং manipulate করা সম্ভব। Jackson-এর JsonNode API এই কাজটি সহজ করে। এটি JSON ডেটাকে একটি Tree Model-এ রূপান্তর করে, যেখানে নোডগুলো বিভিন্ন প্রকার ডেটা (string, number, boolean, array, object) ধারণ করতে পারে।
JSON Tree Model কীভাবে কাজ করে
- ObjectMapper: JSON String কে
JsonNode-তে রূপান্তর করতে ব্যবহৃত হয়। - JsonNode: Tree-র প্রতিটি অংশ (নোড) এক্সেস এবং ম্যানিপুলেট করার জন্য ব্যবহৃত হয়।
- Methods for Extraction and Manipulation:
get(String fieldName): একটি নির্দিষ্ট ফিল্ডের মান পাওয়ার জন্য।path(String fieldName): একটি ফিল্ড এক্সেস করার সময় নাল চেক না করেই মান ফেরত দেয়।at(String jsonPointer): JSON Pointer-এর মাধ্যমে নোড এক্সেস করতে ব্যবহৃত হয়।isXxx(): একটি নোডের টাইপ যাচাই করার জন্য (যেমনisObject(),isArray(), ইত্যাদি)।with(String fieldName): Object নোড যোগ করতে।add(JsonNode): Array নোডে নতুন আইটেম যোগ করতে।
উদাহরণ ১: JSON থেকে ডেটা Extraction
JSON String:
{
"name": "John Doe",
"age": 30,
"address": {
"city": "Dhaka",
"zip": "1212"
},
"skills": ["Java", "Spring", "Jackson"]
}
কোড:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws Exception {
String json = """
{
"name": "John Doe",
"age": 30,
"address": {
"city": "Dhaka",
"zip": "1212"
},
"skills": ["Java", "Spring", "Jackson"]
}
""";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(json);
// Extracting fields
String name = rootNode.get("name").asText();
int age = rootNode.get("age").asInt();
String city = rootNode.path("address").path("city").asText();
String zip = rootNode.at("/address/zip").asText();
// Extracting array
JsonNode skillsNode = rootNode.get("skills");
for (JsonNode skill : skillsNode) {
System.out.println(skill.asText());
}
// Printing extracted data
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("City: " + city);
System.out.println("Zip: " + zip);
}
}
আউটপুট:
Java
Spring
Jackson
Name: John Doe
Age: 30
City: Dhaka
Zip: 1212
উদাহরণ ২: JSON Tree-তে ডেটা Manipulation
কোড:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
public class Main {
public static void main(String[] args) throws Exception {
String json = """
{
"name": "John Doe",
"age": 30,
"skills": ["Java", "Spring"]
}
""";
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode rootNode = (ObjectNode) objectMapper.readTree(json);
// Modifying existing fields
rootNode.put("name", "Jane Doe");
rootNode.put("age", 35);
// Adding a new field
rootNode.put("profession", "Software Engineer");
// Adding a new skill to the array
ArrayNode skillsNode = (ArrayNode) rootNode.get("skills");
skillsNode.add("Jackson");
// Adding a new object
ObjectNode addressNode = rootNode.putObject("address");
addressNode.put("city", "Dhaka");
addressNode.put("zip", "1212");
// Converting back to JSON String
String updatedJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);
System.out.println(updatedJson);
}
}
আউটপুট:
{
"name": "Jane Doe",
"age": 35,
"skills": ["Java", "Spring", "Jackson"],
"profession": "Software Engineer",
"address": {
"city": "Dhaka",
"zip": "1212"
}
}
মূল ব্যবহারিক ক্ষেত্র:
- ডেটা Extraction: API থেকে ডেটা রিড করার সময়।
- Manipulation: ডেটা প্রসেসিং এবং পুনরায় JSON রেসপন্স তৈরির ক্ষেত্রে।
- Dynamic JSON Handling: যেখানে JSON স্কিমা পূর্বনির্ধারিত নয়।
এই প্রক্রিয়াগুলো ব্যবহার করে JSON ডেটা সহজেই এক্সেস এবং কাস্টমাইজ করা যায়।
Content added By
Read more