উদাহরণ সহ Nested JSON হ্যান্ডল করা

JSON.simple এর মাধ্যমে Nested JSON হ্যান্ডলিং - জেসন.সিম্পল (Json.Simple) - Java Technologies

281

Nested JSON হলো JSON ডেটা স্ট্রাকচার, যেখানে একটি JSON অবজেক্টের মধ্যে আরেকটি JSON অবজেক্ট (অথবা অ্যারে) থাকতে পারে। এটি জটিল ডেটা কাঠামো তৈরি করতে ব্যবহৃত হয় এবং সাধারণত complex data ম্যানেজ করার জন্য ব্যবহৃত হয়, যেমন address, contact information, order details ইত্যাদি।

এখানে আমরা JSON.simple লাইব্রেরি ব্যবহার করে nested JSON objects হ্যান্ডল করার একটি উদাহরণ দেখব।


ধাপ ১: Nested JSON Structure

ধরা যাক আমাদের একটি JSON স্ট্রিং রয়েছে, যেখানে একটি Person অবজেক্টের মধ্যে একটি Address অবজেক্ট এবং একটি Phones অ্যারে রয়েছে। JSON ডেটা নিচে দেওয়া হলো:

Sample Nested JSON:

{
    "name": "John Doe",
    "age": 30,
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "zipcode": "10001"
    },
    "phones": [
        {"type": "home", "number": "123-4567"},
        {"type": "mobile", "number": "987-6543"}
    ]
}

এখানে, "address" একটি nested JSON object এবং "phones" একটি JSON array


ধাপ ২: Java Classes তৈরি করা

এখন, আমরা Java ক্লাস তৈরি করব যেখানে Person, Address, এবং Phone নামক কাস্টম অবজেক্ট থাকবে। প্রতিটি অবজেক্টের জন্য ফিল্ড এবং getter/setter তৈরি করা হবে।

2.1. Address ক্লাস:

public class Address {
    private String street;
    private String city;
    private String zipcode;

    // Constructor
    public Address(String street, String city, String zipcode) {
        this.street = street;
        this.city = city;
        this.zipcode = zipcode;
    }

    // Getters
    public String getStreet() {
        return street;
    }

    public String getCity() {
        return city;
    }

    public String getZipcode() {
        return zipcode;
    }
}

2.2. Phone ক্লাস:

public class Phone {
    private String type;
    private String number;

    // Constructor
    public Phone(String type, String number) {
        this.type = type;
        this.number = number;
    }

    // Getters
    public String getType() {
        return type;
    }

    public String getNumber() {
        return number;
    }
}

2.3. Person ক্লাস:

import java.util.List;

public class Person {
    private String name;
    private int age;
    private Address address;
    private List<Phone> phones;

    // Constructor
    public Person(String name, int age, Address address, List<Phone> phones) {
        this.name = name;
        this.age = age;
        this.address = address;
        this.phones = phones;
    }

    // Getters
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public Address getAddress() {
        return address;
    }

    public List<Phone> getPhones() {
        return phones;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", address=" + address.getStreet() + ", " + address.getCity() + ", " + address.getZipcode() + "]";
    }
}

এখানে, Person ক্লাসে আমরা Address এবং Phone অবজেক্ট যুক্ত করেছি। Phones একটি List হিসেবে রাখা হয়েছে যা একাধিক ফোন নম্বর ধারণ করতে পারে।


ধাপ ৩: Nested JSON Parsing (Deserialization)

এখন আমরা JSON.simple লাইব্রেরি ব্যবহার করে JSON স্ট্রিং থেকে Person অবজেক্টে ডেটা পার্স (deserialize) করব, যেখানে Address এবং Phones nested JSON structures রয়েছে।

3.1. Nested JSON Parsing Example:

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

import java.util.ArrayList;
import java.util.List;

public class NestedJsonParsingExample {
    public static void main(String[] args) {
        String jsonString = "{\n" +
                "    \"name\": \"John Doe\",\n" +
                "    \"age\": 30,\n" +
                "    \"address\": {\n" +
                "        \"street\": \"123 Main St\",\n" +
                "        \"city\": \"New York\",\n" +
                "        \"zipcode\": \"10001\"\n" +
                "    },\n" +
                "    \"phones\": [\n" +
                "        {\"type\": \"home\", \"number\": \"123-4567\"},\n" +
                "        {\"type\": \"mobile\", \"number\": \"987-6543\"}\n" +
                "    ]\n" +
                "}";

        JSONParser parser = new JSONParser();

        try {
            // Parse JSON string into JSONObject
            JSONObject jsonObject = (JSONObject) parser.parse(jsonString);

            // Deserialize the Person data
            String name = (String) jsonObject.get("name");
            long age = (long) jsonObject.get("age");

            // Deserialize the Address object (nested object)
            JSONObject addressJson = (JSONObject) jsonObject.get("address");
            String street = (String) addressJson.get("street");
            String city = (String) addressJson.get("city");
            String zipcode = (String) addressJson.get("zipcode");
            Address address = new Address(street, city, zipcode);

            // Deserialize the Phones array (JSON array)
            JSONArray phonesJson = (JSONArray) jsonObject.get("phones");
            List<Phone> phones = new ArrayList<>();
            for (Object phoneObj : phonesJson) {
                JSONObject phoneJson = (JSONObject) phoneObj;
                String type = (String) phoneJson.get("type");
                String number = (String) phoneJson.get("number");
                phones.add(new Phone(type, number));
            }

            // Create Person object
            Person person = new Person(name, (int) age, address, phones);

            // Print the deserialized Person object
            System.out.println(person);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output:

Person [name=John Doe, age=30, address=123 Main St, New York, 10001]

ব্যাখ্যা:

  1. JSONParser ব্যবহার করে JSON স্ট্রিংটি JSONObject-এ পার্স করা হয়েছে।
  2. Address অবজেক্টটি একটি nested object হিসেবে প্যার্স করা হয়েছে।
  3. Phones অ্যারে (JSON array) থেকে ফোনের তথ্য একে একে বের করে Phone অবজেক্টে রূপান্তর করা হয়েছে এবং List তে রাখা হয়েছে।
  4. সবশেষে, Person অবজেক্টে ডেটা সেট করা হয়েছে এবং এটি প্রিন্ট করা হয়েছে।

ধাপ ৪: JSON File থেকে Nested Object Parsing

এখন আমরা দেখব কিভাবে একটি JSON ফাইল থেকে nested JSON objects পার্স করা যায় এবং Java objects-এ রূপান্তর করা যায়।

4.1. JSON File (person.json)

{
    "name": "Jane Smith",
    "age": 28,
    "address": {
        "street": "456 Elm St",
        "city": "Los Angeles",
        "zipcode": "90001"
    },
    "phones": [
        {"type": "home", "number": "555-1234"},
        {"type": "work", "number": "555-5678"}
    ]
}

4.2. File থেকে Nested JSON Parsing:

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

public class JsonFileDeserialization {
    public static void main(String[] args) {
        JSONParser parser = new JSONParser();

        try (FileReader reader = new FileReader("person.json")) {
            // Parse the JSON file into JSONObject
            JSONObject jsonObject = (JSONObject) parser.parse(reader);

            // Deserialize the Person data
            String name = (String) jsonObject.get("name");
            long age = (long) jsonObject.get("age");

            // Deserialize Address (nested JSON object)
            JSONObject addressJson = (JSONObject) jsonObject.get("address");
            String street = (String) addressJson.get("street");
            String city = (String) addressJson.get("city");
            String zipcode = (String) addressJson.get("zipcode");
            Address address = new Address(street, city, zipcode);

            // Deserialize Phones (JSON array)
            JSONArray phonesJson = (JSONArray) jsonObject.get("phones");
            List<Phone> phones = new ArrayList<>();
            for (Object phoneObj : phonesJson) {
                JSONObject phoneJson = (JSONObject) phoneObj;
                String type = (String) phoneJson.get("type");
                String number = (String) phoneJson.get("number");
                phones.add(new Phone(type, number));
            }

            // Create Person object
            Person person = new Person(name, (int) age, address, phones);

            // Print the deserialized Person object
            System.out.println(person);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output:

Person [name=Jane Smith, age=28, address=456 Elm St, Los Angeles, 90001]

  • Nested JSON objects এবং arrays পার্স করতে JSON.simple লাইব্রেরি খুবই উপকারী।
  • Deserialization করতে JSONParser এবং JSONObject ব্যবহার করা হয়।
  • JSONArray ব্যবহার করে JSON অ্যারের মধ্যে থাকা অবজেক্টগুলি একটি List তে রূপান্তর করা হয়।
  • nested structures পার্স করার জন্য, আপনাকে প্রতি স্তরের JSON অবজেক্ট বা অ্যারে থেকে ডেটা বের করতে হবে এবং সেগুলিকে Java objects-এ রূপান্তর করতে হবে।

এই প্রক্রিয়া JSON ডেটা ম্যানিপুলেশন এবং বিশ্লেষণের জন্য একটি শক্তিশালী উপায়।

Content added By
Promotion

Are you sure to start over?

Loading...