Complex এবং Nested Object Deserialization

JSON.simple এর মাধ্যমে Custom Object Deserialization - জেসন.সিম্পল (Json.Simple) - Java Technologies

328

JSON.simple লাইব্রেরি ব্যবহার করে JSON ডেটা থেকে complex এবং nested objects-এর deserialization (Java objects এ রূপান্তর) করা সম্ভব। এই প্রক্রিয়াটি সাধারণত JSON ডেটার মধ্যে থাকা nested structures (যেমন: nested JSON objects বা arrays) পার্স (parse) করে সেগুলোকে Java objects এ রূপান্তর করার জন্য ব্যবহৃত হয়।

এখানে, আমরা দেখব কিভাবে complex JSON objects এবং nested JSON objects থেকে Java objects তৈরি করা যায় JSON.simple লাইব্রেরি ব্যবহার করে।


ধাপ ১: Complex এবং Nested JSON Structure

ধরা যাক, আমাদের একটি JSON ফাইল বা স্ট্রিং আছে যা complex এবং nested JSON objects ধারণ করে। আমাদের এই JSON ডেটাকে Java objects-এ রূপান্তর করতে হবে।

Example JSON (complex nested object)

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

এটি একটি complex JSON যা একটি nested JSON object (address) এবং একটি JSON array (phones) ধারণ করে।


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

এখন, আমাদের এই JSON ডেটার জন্য Java ক্লাস তৈরি করতে হবে।

Java Class for Address

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

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

    public void setStreet(String street) {
        this.street = street;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getZipcode() {
        return zipcode;
    }

    public void setZipcode(String zipcode) {
        this.zipcode = zipcode;
    }
}

Java Class for Phone

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

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

    public void setType(String type) {
        this.type = type;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }
}

Java Class for Main Object (Person)

import java.util.List;

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

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

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

    public void setPhones(List<Phone> phones) {
        this.phones = phones;
    }
}

এখানে, আমরা Person, Address, এবং Phone ক্লাস তৈরি করেছি যাতে JSON ডেটার বিভিন্ন অংশগুলির জন্য নির্দিষ্ট Java objects তৈরি করা যায়।


ধাপ ৩: JSON Parsing (Deserialization) এবং Complex/Nested Object Mapping

এখন আমরা JSON.simple লাইব্রেরি ব্যবহার করে JSON ডেটাকে Java objects-এ রূপান্তর (deserialization) করব।

Example: Complex JSON Parsing

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 JsonDeserializationExample {

    public static void main(String[] args) {
        // JSON String (Complex and Nested Object)
        String jsonString = "{\n" +
                "  \"id\": 1,\n" +
                "  \"name\": \"John Doe\",\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" +
                "}";

        try {
            // Create JSON parser
            JSONParser parser = new JSONParser();

            // Parse the JSON string into a JSONObject
            JSONObject jsonObject = (JSONObject) parser.parse(jsonString);

            // Deserialize fields from JSON
            int id = ((Long) jsonObject.get("id")).intValue();
            String name = (String) jsonObject.get("name");

            // Deserialize the address (nested object)
            JSONObject addressJson = (JSONObject) jsonObject.get("address");
            Address address = new Address();
            address.setStreet((String) addressJson.get("street"));
            address.setCity((String) addressJson.get("city"));
            address.setZipcode((String) addressJson.get("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;
                Phone phone = new Phone();
                phone.setType((String) phoneJson.get("type"));
                phone.setNumber((String) phoneJson.get("number"));
                phones.add(phone);
            }

            // Create the Person object
            Person person = new Person();
            person.setId(id);
            person.setName(name);
            person.setAddress(address);
            person.setPhones(phones);

            // Output the deserialized object
            System.out.println("Person ID: " + person.getId());
            System.out.println("Name: " + person.getName());
            System.out.println("Address: " + person.getAddress().getStreet() + ", " + person.getAddress().getCity() + ", " + person.getAddress().getZipcode());
            for (Phone phone : person.getPhones()) {
                System.out.println("Phone: " + phone.getType() + " - " + phone.getNumber());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output:

Person ID: 1
Name: John Doe
Address: 123 Main St, New York, 10001
Phone: home - 123-4567
Phone: mobile - 987-6543

ব্যাখ্যা:

  1. JSONParser: JSON স্ট্রিংটি JSONObject-এ পার্স (parse) করতে ব্যবহৃত হয়।
  2. Address এবং Phone অবজেক্ট: nested object এবং array থেকে ডেটা বের করে Address এবং Phone Java objects তৈরি করা হয়েছে।
  3. List: JSONArray থেকে প্রতিটি ফোন অবজেক্ট নিয়ে একটি Phone অবজেক্ট তৈরি এবং একটি লিস্টে রাখা হয়েছে।

JSON.simple লাইব্রেরি ব্যবহার করে complex এবং nested JSON objects কে Java objects-এ রূপান্তর (deserialization) করা সম্ভব। এখানে দেখানো উদাহরণগুলি আপনাকে nested JSON objects, arrays, এবং complex data structures পার্স করার প্রক্রিয়া বুঝতে সাহায্য করবে।

  • JSONObject: JSON এর key-value pair ধারণ করে।
  • JSONArray: একাধিক value ধারণ করে।
  • Nested JSON Objects: এক JSON object এর মধ্যে অন্য JSON object থাকতে পারে।

JSON.simple লাইব্রেরি খুবই হালকা ও দ্রুত, এবং complex JSON structures হ্যান্ডল করার জন্যও কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...