Gson এর Tree Model কি এবং এর ব্যবহার

Gson এবং JSON Tree Model - জিসন (Gson) - Java Technologies

369

Gson এর Tree Model একটি ফিচার যা JSON ডেটাকে একটি tree structure আকারে রিপ্রেজেন্ট করে এবং বিভিন্ন ধরনের JSON ডেটা (যেমন JSON objects, arrays, primitive values) এর সাথে কাজ করার জন্য একটি শক্তিশালী API প্রদান করে। এটি বিশেষভাবে ব্যবহারকারীকে JSON ডেটার প্রতিটি উপাদানের সাথে ডাইনোমিকভাবে কাজ করার সুযোগ দেয়, যখন আপনি জানেন না JSON এর কাঠামো কী হবে বা যখন JSON structure খুব জটিল হয়।

Tree Model হলো JSON ডেটার স্ট্রাকচারাল রিপ্রেজেন্টেশন যা JsonElement নামক একটি বেস ক্লাস ব্যবহার করে। JsonElement এর বিভিন্ন subtype রয়েছে, যেমন JsonObject, JsonArray, JsonPrimitive, এবং JsonNull যা JSON এর বিভিন্ন অংশের প্রতিনিধিত্ব করে।

Tree Model এ JSON ডেটাকে গঠন করা হয় এবং JSON ডেটার উপাদানগুলোকে traversal বা manipulation করার জন্য বেশ কিছু মেথড এবং ক্লাস সরবরাহ করে।


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

Gson এর Tree Model JSON ডেটাকে JsonElement হিসেবে মান্য করে এবং বিভিন্ন subclass এর মাধ্যমে ডেটার উপাদানগুলো রূপান্তরিত করা হয়। এই ধরনের মডেল ব্যবহার করে আপনি JSON ডেটার সঙ্গে আরও বেশি নির্ভুলভাবে এবং ডাইনামিকভাবে কাজ করতে পারেন।

Key Classes in Gson Tree Model:

  1. JsonElement:
    • এটি বেস ক্লাস এবং এটি JSON object, array, primitive, null এর সাধারণ রিপ্রেজেন্টেশন।
  2. JsonObject:
    • এটি JSON object রূপে কাজ করে এবং key-value পেয়ার ধারণ করে।
  3. JsonArray:
    • এটি JSON array রূপে কাজ করে এবং বিভিন্ন মান ধারণ করতে পারে।
  4. JsonPrimitive:
    • এটি primitive মান (যেমন: String, Number, Boolean) ধারণ করে।
  5. JsonNull:
    • এটি null মানের জন্য ব্যবহৃত হয়।

Tree Model এর ব্যবহার:

Step 1: JSON কে Tree Model এ রূপান্তর করা

আপনি JSON ডেটাকে JsonElement-এ রূপান্তর করতে পারেন এবং এর মাধ্যমে JSON-এর যে কোনও অংশের সঙ্গে কাজ করতে পারেন।

import com.google.gson.*;

public class TreeModelExample {
    public static void main(String[] args) {
        String json = "{"
            + "\"name\":\"John\","
            + "\"age\":30,"
            + "\"isStudent\":false,"
            + "\"address\":{"
            + "\"street\":\"123 Main St\","
            + "\"city\":\"New York\""
            + "},"
            + "\"phoneNumbers\":["
            + "{\"type\":\"home\",\"number\":\"123-456-7890\"},"
            + "{\"type\":\"mobile\",\"number\":\"987-654-3210\"}"
            + "]"
            + "}";

        // Gson instance
        Gson gson = new Gson();
        
        // Convert JSON string to JsonElement
        JsonElement jsonElement = JsonParser.parseString(json);

        // Check the type of the JsonElement
        if (jsonElement.isJsonObject()) {
            JsonObject jsonObject = jsonElement.getAsJsonObject();
            
            // Accessing values from the JSON object
            String name = jsonObject.get("name").getAsString();
            int age = jsonObject.get("age").getAsInt();
            boolean isStudent = jsonObject.get("isStudent").getAsBoolean();

            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
            System.out.println("Is Student: " + isStudent);
            
            // Accessing nested JsonObject (address)
            JsonObject address = jsonObject.getAsJsonObject("address");
            String street = address.get("street").getAsString();
            String city = address.get("city").getAsString();
            System.out.println("Address: " + street + ", " + city);
            
            // Accessing JsonArray (phoneNumbers)
            JsonArray phoneNumbers = jsonObject.getAsJsonArray("phoneNumbers");
            for (JsonElement phone : phoneNumbers) {
                JsonObject phoneObject = phone.getAsJsonObject();
                String type = phoneObject.get("type").getAsString();
                String number = phoneObject.get("number").getAsString();
                System.out.println(type + " Phone: " + number);
            }
        }
    }
}

Output:

Name: John
Age: 30
Is Student: false
Address: 123 Main St, New York
home Phone: 123-456-7890
mobile Phone: 987-654-3210

Step 2: Tree Model এর মাধ্যমে JSON Manipulation

Tree Model আপনাকে JSON ডেটা থেকে ডেটা পড়া এবং পরিবর্তন করার জন্য সুবিধা প্রদান করে। আপনি JsonObject বা JsonArray এর মাধ্যমে JSON ডেটার মান পরিবর্তন করতে পারেন।

Manipulation Example:

import com.google.gson.*;

public class TreeModelManipulation {
    public static void main(String[] args) {
        String json = "{"
            + "\"name\":\"John\","
            + "\"age\":30,"
            + "\"isStudent\":false"
            + "}";

        // Gson instance
        Gson gson = new Gson();
        
        // Convert JSON string to JsonElement
        JsonElement jsonElement = JsonParser.parseString(json);
        
        // Modify JSON Object (Tree Model)
        if (jsonElement.isJsonObject()) {
            JsonObject jsonObject = jsonElement.getAsJsonObject();
            
            // Modifying existing fields
            jsonObject.addProperty("name", "Jane"); // Change name to "Jane"
            jsonObject.addProperty("age", 25); // Change age to 25
            
            // Add a new property
            jsonObject.addProperty("isEmployed", true);

            // Output the modified JSON
            System.out.println(gson.toJson(jsonObject)); // The modified JSON
        }
    }
}

Output:

{"name":"Jane","age":25,"isStudent":false,"isEmployed":true}

এখানে, আমরা JsonObject ব্যবহার করে একটি প্রপার্টি পরিবর্তন করেছি এবং নতুন প্রপার্টি যুক্ত করেছি।


Tree Model এর সুবিধা:

  1. Dynamic and Flexible:
    • Tree Model ব্যবহার করে আপনি JSON ডেটা কাস্টমাইজ এবং ম্যানিপুলেট করতে পারেন, এমনকি JSON এর structure জানার আগেও। এটি ডাইনামিকভাবে ডেটার অংশে কাজ করতে সাহায্য করে।
  2. Type-Specific Access:
    • JsonObject, JsonArray, JsonPrimitive, ইত্যাদি ব্যবহার করে আপনি সুনির্দিষ্ট JSON ডেটার ধরন অনুযায়ী এক্সেস পেতে পারেন। এটি অত্যন্ত কার্যকরী যখন JSON এর structure পরিবর্তিত হতে পারে।
  3. Easy Traversal:
    • Tree Model গুলি traversal বা iteration করার জন্য সহজ API সরবরাহ করে, যাতে JSON ডেটার ভিতরের মানগুলি সহজে অ্যাক্সেস করা যায়।
  4. No POJO Required:
    • JsonElement ব্যবহার করে আপনি কোন POJO (Plain Old Java Object) ক্লাসের প্রয়োজন ছাড়াই JSON ডেটার সাথে কাজ করতে পারেন। এটি বিশেষভাবে যখন JSON structure খুবই জটিল বা পরিবর্তনশীল হয় তখন কার্যকরী।

কোথায় ব্যবহার করবেন?

  • Dynamic JSON Handling: যখন JSON structure পরিবর্তনশীল বা আপনার কাছে JSON structure এর ধরন না থাকলে, তখন Tree Model ব্যবহার করে আপনি ডেটাকে ডাইনামিকভাবে পরিচালনা করতে পারেন।
  • Complex JSON Parsing: যখন JSON স্ট্রাকচার জটিল, গভীর nested বা polymorphic হয়, তখন Tree Model সহজে এক্সেস করা যায়।
  • Data Manipulation: JSON ডেটা read/write করতে এবং কাস্টমাইজ করতে যখন POJO ক্লাস ব্যবহার না করা হয়।

Gson এর Tree Model JSON ডেটাকে একটি tree-like structure এ রূপান্তর করে এবং এর বিভিন্ন অংশে সহজে কাজ করার সুযোগ দেয়। এটি বিশেষভাবে উপকারী যখন আপনি JSON এর structure জানেন না বা যখন JSON খুবই জটিল ও পরিবর্তনশীল হয়। JsonElement এবং এর subtype গুলি ব্যবহার করে আপনি JSON ডেটা সহজে manipulate, traverse, এবং modify করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...