JSON Tree Model ব্যবহার

জ্যাকসন (Jackson) - Java Technologies

316

Jackson JSON Tree Model হলো একটি পদ্ধতি যা JSON ডেটার কাঠামো নিয়ে কাজ করতে সহায়তা করে। এটি JSON ডেটাকে একটি গাছের মতো অবজেক্টে রূপান্তর করে এবং সেই গাছের মাধ্যমে JSON ডেটা সহজে পড়া, পরিবর্তন করা, এবং লিখতে দেয়।

Jackson Tree Model ব্যবহার করে JSON ডেটা প্রসেস করার জন্য মূলত JsonNode এবং ObjectMapper ক্লাস ব্যবহার করা হয়।


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

1. JSON ডেটা লোড করা

Tree Model-এ JSON ডেটাকে ObjectMapper দিয়ে JsonNode তে রূপান্তর করা হয়।

উদাহরণ:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonTreeModelExample {
    public static void main(String[] args) throws Exception {
        String json = "{ \"id\": 1, \"name\": \"John\", \"active\": true }";

        // ObjectMapper ইনস্ট্যান্স তৈরি
        ObjectMapper objectMapper = new ObjectMapper();

        // JSON ডেটা Tree Model এ রূপান্তর
        JsonNode rootNode = objectMapper.readTree(json);

        // Tree Model থেকে ডেটা পড়া
        int id = rootNode.get("id").asInt();
        String name = rootNode.get("name").asText();
        boolean isActive = rootNode.get("active").asBoolean();

        System.out.println("ID: " + id);
        System.out.println("Name: " + name);
        System.out.println("Active: " + isActive);
    }
}

আউটপুট:

ID: 1
Name: John
Active: true

2. JSON ডেটা পরিবর্তন করা

Tree Model ব্যবহার করে JSON ডেটাকে পরিবর্তন করা যায়।

উদাহরণ:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

public class ModifyJsonExample {
    public static void main(String[] args) throws Exception {
        String json = "{ \"id\": 1, \"name\": \"John\", \"active\": true }";

        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode rootNode = objectMapper.readTree(json);

        // ডেটা পরিবর্তন করা
        ((ObjectNode) rootNode).put("name", "Jane");
        ((ObjectNode) rootNode).put("email", "jane.doe@example.com");

        // পরিবর্তিত JSON ডেটা প্রিন্ট করা
        String updatedJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);
        System.out.println(updatedJson);
    }
}

আউটপুট:

{
  "id": 1,
  "name": "Jane",
  "active": true,
  "email": "jane.doe@example.com"
}

3. Tree Model থেকে নতুন JSON তৈরি করা

Tree Model ব্যবহার করে JSON ডেটা ম্যানুয়ালি তৈরি করা যায়।

উদাহরণ:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

public class CreateJsonExample {
    public static void main(String[] args) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();

        // নতুন JSON Object তৈরি
        ObjectNode rootNode = objectMapper.createObjectNode();
        rootNode.put("id", 1);
        rootNode.put("name", "Alice");
        rootNode.put("active", true);

        // JSON প্রিন্ট করা
        String json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);
        System.out.println(json);
    }
}

আউটপুট:

{
  "id": 1,
  "name": "Alice",
  "active": true
}

4. Complex JSON ডেটার সাথে কাজ করা

Nested JSON এর জন্য Tree Model বিশেষ কার্যকর। JsonNode দিয়ে সহজে নেস্টেড ডেটা অ্যাক্সেস করা যায়।

উদাহরণ:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class NestedJsonExample {
    public static void main(String[] args) throws Exception {
        String json = "{ \"user\": { \"id\": 1, \"name\": \"John\" }, \"active\": true }";

        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode rootNode = objectMapper.readTree(json);

        // Nested JSON পড়া
        JsonNode userNode = rootNode.get("user");
        int id = userNode.get("id").asInt();
        String name = userNode.get("name").asText();
        boolean isActive = rootNode.get("active").asBoolean();

        System.out.println("ID: " + id);
        System.out.println("Name: " + name);
        System.out.println("Active: " + isActive);
    }
}

আউটপুট:

ID: 1
Name: John
Active: true

5. Tree Model এর জন্য গুরুত্বপূর্ণ মেথড

মেথডবর্ণনা
get(String name)নির্দিষ্ট ফিল্ডের মান ফেরত দেয়।
asText()String মান রূপান্তর করে।
asInt()Integer মান রূপান্তর করে।
asBoolean()Boolean মান রূপান্তর করে।
isObject()চেক করে এটি Object কিনা।
isArray()চেক করে এটি Array কিনা।
path(String name)Null Pointer Exception ছাড়াই নোড অ্যাক্সেস করে।

Jackson-এর JSON Tree Model ব্যবহার করা খুবই সুবিধাজনক যখন:

  1. JSON ডেটা খুব বড় বা জটিল।
  2. JSON ফিল্ডগুলো স্ট্যাটিক নয়।
  3. JSON ডেটার সাথে পরিবর্তন বা ম্যানিপুলেশন করতে হয়।

Tree Model-এর মাধ্যমে JSON ডেটার উপর ফাইন-গ্রেইনড নিয়ন্ত্রণ সম্ভব হয়।

Content added By

Jackson লাইব্রেরির একটি গুরুত্বপূর্ণ ফিচার হলো JSON Tree Model, যা JSON ডেটার সাথে কাজ করার জন্য একটি নমনীয় ও গতিশীল উপায় প্রদান করে। এটি ObjectMapper-এর মাধ্যমে JSON ডেটাকে একটি "গাছের মতো স্ট্রাকচার" (tree-like structure) হিসেবে মডেল করে। এর সাহায্যে আপনি JSON ডেটার বিভিন্ন অংশ সরাসরি অ্যাক্সেস, সংশোধন, বা নতুন নোড যুক্ত করতে পারেন।


JSON Tree Model কিভাবে কাজ করে?

Jackson-এর JsonNode ক্লাস Tree Model তৈরি করে। এই মডেলটি JSON ডেটাকে একটি node-based structure হিসেবে উপস্থাপন করে, যেখানে প্রতিটি নোড JSON ডেটার একটি অংশ (যেমন, object, array, value) উপস্থাপন করে।

মূল বৈশিষ্ট্য:

  1. ডাইনামিক প্রক্রিয়াকরণ: Tree Model ব্যবহার করে JSON ডেটার সাথে সরাসরি ইন্টারঅ্যাক্ট করা যায়, যেটা POJO বা ক্লাস মডেল ছাড়াই কাজ করে।
  2. নেস্টেড ডেটা পরিচালনা: নেস্টেড JSON ডেটার ক্ষেত্রে Tree Model অনেক সহজ এবং কার্যকর।
  3. ডেটা ম্যানিপুলেশন: Tree Model JSON ডেটা পড়া, লেখা, এবং সম্পাদনার জন্য আদর্শ।

JSON Tree Model ব্যবহার করার ধাপসমূহ

  1. JSON ডেটা Tree Model-এ রূপান্তর:
    ObjectMapper ক্লাসের মাধ্যমে JSON ডেটাকে Tree Model-এ রূপান্তর করতে readTree() মেথড ব্যবহার করা হয়।
  2. ডেটা অ্যাক্সেস:
    Tree Model-এর মাধ্যমে JsonNode ক্লাস ব্যবহার করে JSON ডেটা অ্যাক্সেস এবং সংশোধন করা যায়।
  3. ডেটা পরিবর্তন করে JSON-এ রূপান্তর:
    Tree Model থেকে পরিবর্তিত ডেটাকে JSON ফর্ম্যাটে রূপান্তর করতে writeValueAsString() ব্যবহার করা হয়।

উদাহরণ:

১. JSON Tree Model তৈরি এবং ডেটা অ্যাক্সেস করা:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonTreeModelExample {
    public static void main(String[] args) throws Exception {
        String json = """
        {
            "id": 101,
            "name": "John Doe",
            "address": {
                "city": "Dhaka",
                "country": "Bangladesh"
            },
            "skills": ["Java", "Spring", "Jackson"]
        }
        """;

        // ObjectMapper ব্যবহার করে Tree Model তৈরি
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode rootNode = objectMapper.readTree(json);

        // ডেটা অ্যাক্সেস করা
        int id = rootNode.get("id").asInt();
        String name = rootNode.get("name").asText();
        String city = rootNode.get("address").get("city").asText();

        System.out.println("ID: " + id);
        System.out.println("Name: " + name);
        System.out.println("City: " + city);

        // Array ডেটা অ্যাক্সেস
        JsonNode skillsNode = rootNode.get("skills");
        for (JsonNode skill : skillsNode) {
            System.out.println("Skill: " + skill.asText());
        }
    }
}

আউটপুট:

ID: 101
Name: John Doe
City: Dhaka
Skill: Java
Skill: Spring
Skill: Jackson

২. JSON Tree Model-এ ডেটা পরিবর্তন:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

public class JsonTreeModelModification {
    public static void main(String[] args) throws Exception {
        String json = """
        {
            "id": 101,
            "name": "John Doe",
            "address": {
                "city": "Dhaka",
                "country": "Bangladesh"
            }
        }
        """;

        // ObjectMapper ব্যবহার করে Tree Model তৈরি
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode rootNode = objectMapper.readTree(json);

        // ডেটা পরিবর্তন
        ((ObjectNode) rootNode).put("name", "Jane Doe"); // নাম পরিবর্তন
        ((ObjectNode) rootNode).put("age", 30); // নতুন ফিল্ড যুক্ত

        // JSON-এ রূপান্তর এবং প্রিন্ট
        String modifiedJson = objectMapper.writeValueAsString(rootNode);
        System.out.println(modifiedJson);
    }
}

আউটপুট:

{
  "id": 101,
  "name": "Jane Doe",
  "address": {
    "city": "Dhaka",
    "country": "Bangladesh"
  },
  "age": 30
}

JSON Tree Model-এর ভূমিকা

  1. ডাইনামিক ডেটা প্রসেসিং: JSON Tree Model ব্যবহার করে ডেটা ক্লাস মডেল ছাড়াই সরাসরি পরিচালনা করা যায়।
  2. কমপ্লেক্স নেস্টেড স্ট্রাকচার: নেস্টেড JSON ডেটার জন্য Tree Model একটি কার্যকর পদ্ধতি।
  3. ডেটা ম্যানিপুলেশন: Tree Model সহজে JSON ডেটা যোগ, মুছে ফেলা, বা পরিবর্তন করার ক্ষমতা প্রদান করে।
  4. ডেটা বিশ্লেষণ: Tree Model ডেটার বিভিন্ন অংশ বিশ্লেষণ বা অ্যাক্সেস করার জন্য আদর্শ।

JSON Tree Model একটি ফ্লেক্সিবল এবং শক্তিশালী টুল, যা Jackson-এর মাধ্যমে JSON ডেটা পরিচালনা করার সময় উন্নত নিয়ন্ত্রণ ও গতিশীলতা প্রদান করে। এটি বিশেষভাবে উপযোগী যখন JSON ডেটা পরিবর্তন বা বিশ্লেষণের প্রয়োজন হয়।

Content added By

Jackson এর JsonNode ক্লাস একটি ট্রি-বেসড মডেল সরবরাহ করে, যা JSON ডেটাকে ObjectNode এবং ArrayNode আকারে প্রতিনিধিত্ব করে। এটি মূলত JSON ডেটার ডাইনামিক বা অজানা স্ট্রাকচারের সাথে কাজ করতে সাহায্য করে।


JsonNode এর প্রধান সুবিধাসমূহ

  1. ডাইনামিক JSON পার্সিং: JSON স্ট্রাকচার না জেনেও ডেটা অ্যাক্সেস ও মডিফাই করা।
  2. ডেটার নির্দিষ্ট অংশ অ্যাক্সেস করা: JSON ডেটা থেকে নির্দিষ্ট প্রোপার্টি বা ভ্যালু পড়া।
  3. নেস্টেড ডেটা নিয়ে কাজ: JSON এর নেস্টেড অবজেক্ট বা অ্যারে সহজে ম্যানেজ করা।
  4. Serialization এবং Deserialization সহজ করা।

JsonNode তৈরি করা

ObjectMapper এর মাধ্যমে JSON ডেটাকে JsonNode তে রূপান্তর করা যায়।

উদাহরণ ১: JSON থেকে JsonNode তৈরি

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonNodeExample {
    public static void main(String[] args) throws Exception {
        String jsonString = "{ \"name\": \"Alice\", \"age\": 25, \"skills\": [\"Java\", \"Python\"] }";

        ObjectMapper mapper = new ObjectMapper();
        JsonNode rootNode = mapper.readTree(jsonString);

        // JSON নোড প্রিন্ট করা
        System.out.println(rootNode);
    }
}

Output:

{"name":"Alice","age":25,"skills":["Java","Python"]}

ডেটা অ্যাক্সেস এবং ম্যানিপুলেশন

১. নির্দিষ্ট প্রোপার্টি অ্যাক্সেস করা

String name = rootNode.get("name").asText();
int age = rootNode.get("age").asInt();

System.out.println("Name: " + name); // Output: Alice
System.out.println("Age: " + age);   // Output: 25

২. অ্যারের ডেটা অ্যাক্সেস করা

JsonNode skillsNode = rootNode.get("skills");
for (JsonNode skill : skillsNode) {
    System.out.println("Skill: " + skill.asText());
}
// Output:
// Skill: Java
// Skill: Python

৩. নেস্টেড প্রোপার্টি অ্যাক্সেস করা

String nestedJson = "{ \"user\": { \"name\": \"Bob\", \"address\": { \"city\": \"Dhaka\" } } }";
JsonNode nestedRoot = mapper.readTree(nestedJson);

String city = nestedRoot.get("user").get("address").get("city").asText();
System.out.println("City: " + city); // Output: Dhaka

JSON মডিফিকেশন

১. নতুন প্রোপার্টি যোগ করা

import com.fasterxml.jackson.databind.node.ObjectNode;

ObjectNode objectNode = (ObjectNode) rootNode;
objectNode.put("country", "Bangladesh");

System.out.println(objectNode.toString());
// Output: {"name":"Alice","age":25,"skills":["Java","Python"],"country":"Bangladesh"}

২. প্রোপার্টি মুছে ফেলা

objectNode.remove("age");

System.out.println(objectNode.toString());
// Output: {"name":"Alice","skills":["Java","Python"],"country":"Bangladesh"}

Serialization (Object থেকে JSON)

JsonNode কে JSON স্ট্রিং এ রূপান্তর করা:

String jsonString = mapper.writeValueAsString(rootNode);
System.out.println(jsonString);

JSON Validation

JsonNode ব্যবহার করে ডেটা যাচাই করা:

if (rootNode.has("name")) {
    System.out.println("Name exists.");
}
if (!rootNode.has("address")) {
    System.out.println("Address does not exist.");
}
// Output:
// Name exists.
// Address does not exist.

  • JsonNode ডাইনামিক JSON ডেটার সাথে কাজ করার জন্য উপযোগী।
  • সহজে JSON ডেটা অ্যাক্সেস, আপডেট, এবং যাচাই করা যায়।
  • ObjectNode এবং ArrayNode ক্লাস ব্যবহার করে JSON এর অবজেক্ট এবং অ্যারে ম্যানিপুলেট করা যায়।
  • এটি API ডেভেলপমেন্ট, কনফিগারেশন ফাইল হ্যান্ডলিং এবং JSON ডেটার গভীর স্ট্রাকচারের সাথে কাজ করার ক্ষেত্রে অনেক কার্যকর।
Content added By

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

Jackson একটি জনপ্রিয় Java লাইব্রেরি যা JSON ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। Jackson দুটি প্রধান পদ্ধতির মাধ্যমে JSON ডেটা ম্যানিপুলেট করতে দেয়: Tree Model এবং Object Model। এদের প্রত্যেকটির নিজস্ব বৈশিষ্ট্য এবং ব্যবহারক্ষেত্র রয়েছে। নিচে এদের মধ্যে প্রধান পার্থক্য এবং উদাহরণ দেওয়া হলো।


1. Tree Model

Tree Model JSON ডেটাকে একটি tree-like structure-এ রূপান্তরিত করে। এতে JSON ডেটা DOM (Document Object Model) এর মতো নোড আকারে উপস্থাপিত হয়, যেখানে JSON ডেটা dynamic এবং non-typed হয়।

বৈশিষ্ট্য:

  • JSON ডেটা dynamic এবং flexible
  • JSON স্ট্রাকচার পরিবর্তন এবং নেভিগেট করার সুবিধা।
  • টাইপ সেফটি নেই (type-safe নয়)।
  • ছোট বা অজানা স্ট্রাকচারের JSON ডেটা প্রক্রিয়াকরণের জন্য কার্যকর।
  • JsonNode ক্লাসের মাধ্যমে ডেটা পরিচালিত হয়।

Tree Model উদাহরণ:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class TreeModelExample {
    public static void main(String[] args) throws Exception {
        String json = """
                      {
                          "name": "John Doe",
                          "age": 30,
                          "address": {
                              "city": "New York",
                              "zip": "10001"
                          }
                      }
                      """;

        ObjectMapper mapper = new ObjectMapper();

        // JSON কে Tree Model এ রূপান্তর
        JsonNode rootNode = mapper.readTree(json);

        // ডেটা নেভিগেশন
        String name = rootNode.get("name").asText();
        int age = rootNode.get("age").asInt();
        String city = rootNode.get("address").get("city").asText();

        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        System.out.println("City: " + city);
    }
}

আউটপুট:

Name: John Doe
Age: 30
City: New York

2. Object Model

Object Model JSON ডেটাকে সরাসরি Java Objects এ map করে। এটি type-safe এবং strongly-typed

বৈশিষ্ট্য:

  • JSON ডেটা সরাসরি Java ক্লাসে bind হয়।
  • Type-safe এবং well-structured
  • Pre-defined ডেটা স্ট্রাকচার থাকা দরকার।
  • ডেটার সাথে কাজ করা সহজ, কারণ এটি সরাসরি Java Objects এ রূপান্তরিত হয়।
  • Serialization এবং Deserialization সহজতর হয়।

Object Model উদাহরণ:

import com.fasterxml.jackson.databind.ObjectMapper;

public class ObjectModelExample {
    public static void main(String[] args) throws Exception {
        String json = """
                      {
                          "name": "John Doe",
                          "age": 30,
                          "address": {
                              "city": "New York",
                              "zip": "10001"
                          }
                      }
                      """;

        ObjectMapper mapper = new ObjectMapper();

        // JSON কে Java Object এ রূপান্তর
        Person person = mapper.readValue(json, Person.class);

        // Java Object এর ডেটা প্রিন্ট করা
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
        System.out.println("City: " + person.getAddress().getCity());
    }
}

// Java Class Definitions
class Person {
    private String name;
    private int age;
    private Address address;

    // 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; }
    public Address getAddress() { return address; }
    public void setAddress(Address address) { this.address = address; }
}

class Address {
    private String city;
    private String zip;

    // Getters and Setters
    public String getCity() { return city; }
    public void setCity(String city) { this.city = city; }
    public String getZip() { return zip; }
    public void setZip(String zip) { this.zip = zip; }
}

আউটপুট:

Name: John Doe
Age: 30
City: New York

Tree Model vs Object Model: পার্থক্য

ফিচারTree ModelObject Model
ব্যবহারিক কাঠামোJSON ডেটাকে নোড হিসেবে উপস্থাপন করে।JSON ডেটা সরাসরি Java Objects এ ম্যাপ করে।
ডেটা টাইপDynamic এবং Non-typed।Type-safe এবং Strongly-typed।
ডেটা প্রসেসিংUnknown বা Flexible JSON স্ট্রাকচারের জন্য কার্যকর।Pre-defined স্ট্রাকচারের জন্য কার্যকর।
Performanceতুলনামূলক ধীর, কারণ নেভিগেশনের প্রয়োজন।দ্রুত, কারণ সরাসরি Object এ কাজ করে।
API ClassJsonNode (Tree-like structure)।Custom Java POJO Classes।
ব্যবহার ক্ষেত্রDynamic বা জটিল JSON প্রক্রিয়াকরণ।Simple এবং Pre-defined JSON স্ট্রাকচার।

  • Tree Model: অজানা বা ডায়নামিক JSON ডেটার জন্য ব্যবহার করুন।
  • Object Model: Type-safe এবং নির্ধারিত ডেটা স্ট্রাকচারের JSON প্রক্রিয়াকরণের জন্য আদর্শ।

আপনার প্রয়োজন অনুসারে সঠিক মডেল নির্বাচন করা গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...