JSON Tree থেকে Data Extraction এবং Manipulation

JSON Tree Model ব্যবহার - জ্যাকসন (Jackson) - Java Technologies

363

Jackson লাইব্রেরি ব্যবহার করে JSON Tree থেকে ডেটা extract এবং manipulate করা সম্ভব। Jackson-এর JsonNode API এই কাজটি সহজ করে। এটি JSON ডেটাকে একটি Tree Model-এ রূপান্তর করে, যেখানে নোডগুলো বিভিন্ন প্রকার ডেটা (string, number, boolean, array, object) ধারণ করতে পারে।


JSON Tree Model কীভাবে কাজ করে

  1. ObjectMapper: JSON String কে JsonNode-তে রূপান্তর করতে ব্যবহৃত হয়।
  2. JsonNode: Tree-র প্রতিটি অংশ (নোড) এক্সেস এবং ম্যানিপুলেট করার জন্য ব্যবহৃত হয়।
  3. 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
Promotion

Are you sure to start over?

Loading...