JSON.simple এর মাধ্যমে Custom Object Deserialization

জেসন.সিম্পল (Json.Simple) - Java Technologies

288

Deserialization হল একটি প্রক্রিয়া যার মাধ্যমে JSON ডেটা বা JSON স্ট্রিংকে Java অবজেক্টে রূপান্তরিত করা হয়। JSON.simple লাইব্রেরি ব্যবহার করে আপনি JSON ডেটা বা JSON স্ট্রিংকে একটি Custom Java Object-এ ডেসিরিয়ালাইজ করতে পারেন। এই প্রক্রিয়ায়, JSON ডেটার মধ্যে থাকা কীগুলির মান Java অবজেক্টের ফিল্ডগুলিতে ম্যাপ করা হয়।

এই উদাহরণে, আমরা JSON.simple ব্যবহার করে কিভাবে Custom Java Object-এ JSON ডেটা Deserialization করা যায় তা দেখাবো।


1. Custom Object তৈরি করা

ধরা যাক, আমাদের একটি কাস্টম ক্লাস Person তৈরি করতে হবে, যেখানে name, age এবং isStudent নামে তিনটি ফিল্ড রয়েছে।

public class Person {
    private String name;
    private int age;
    private boolean isStudent;

    // 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 boolean isStudent() {
        return isStudent;
    }

    public void setStudent(boolean student) {
        isStudent = student;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", isStudent=" + isStudent + "]";
    }
}

এই Person ক্লাসের তিনটি প্রপার্টি আছে: name, age, এবং isStudent


2. JSON String তৈরি করা

এখন, আমরা একটি JSON স্ট্রিং তৈরি করব যা আমাদের কাস্টম অবজেক্টের জন্য উপযুক্ত। এই JSON স্ট্রিংটি আমরা পরে Java অবজেক্টে ডেসিরিয়ালাইজ করব।

{
  "name": "John Doe",
  "age": 30,
  "isStudent": false
}

3. JSON.simple ব্যবহার করে Custom Object Deserialization

এখন আমরা JSON.simple লাইব্রেরি ব্যবহার করে উপরের JSON স্ট্রিংকে Person অবজেক্টে ডেসিরিয়ালাইজ করব।

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

public class JsonDeserializationExample {
    public static void main(String[] args) {
        // JSON String তৈরি করা
        String jsonString = "{\"name\":\"John Doe\",\"age\":30,\"isStudent\":false}";

        // JSONParser ব্যবহার করে JSON স্ট্রিং পার্স করা
        JSONParser parser = new JSONParser();
        
        try {
            // JSON স্ট্রিং পার্স করে JSONObject এ রূপান্তর করা
            JSONObject jsonObject = (JSONObject) parser.parse(jsonString);

            // JSON Object থেকে মান বের করা এবং Custom Object এ সেট করা
            Person person = new Person();
            person.setName((String) jsonObject.get("name"));
            person.setAge(((Long) jsonObject.get("age")).intValue());  // JSON.simple returns Long, so need to convert it
            person.setStudent((Boolean) jsonObject.get("isStudent"));

            // Person অবজেক্ট প্রিন্ট করা
            System.out.println(person);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • JSONParser ব্যবহার করে JSON স্ট্রিংকে JSONObject এ রূপান্তরিত করা হয়েছে।
  • তারপর JSONObject.get() মেথড ব্যবহার করে JSON অবজেক্ট থেকে মান বের করা হয়েছে এবং সেটি Person অবজেক্টের প্রপার্টিতে সেট করা হয়েছে।
    • name মান হিসেবে একটি স্ট্রিং পাওয়া গেছে, তাই সরাসরি সেট করা হয়েছে।
    • age একটি Long টাইপের মান ফেরত দেয়, তাই intValue() মেথড ব্যবহার করে সেটি int টাইপে কনভার্ট করা হয়েছে।
    • isStudent মানটি একটি বুলিয়ান (Boolean), যা সরাসরি সেট করা হয়েছে।
  • অবশেষে, আমরা Person অবজেক্টটি প্রিন্ট করেছি, যার মধ্যে JSON থেকে ডেটা এসেছে।

Output:

Person [name=John Doe, age=30, isStudent=false]

এখানে, JSON ডেটা থেকে Java অবজেক্টে ডেসিরিয়ালাইজ করা হয়েছে এবং অবজেক্টটির মান কনসোল এ প্রিন্ট করা হয়েছে।


4. JSON.simple এর মাধ্যমে JSON Array থেকে Custom Object Deserialization

এখন ধরা যাক, আমাদের JSON অ্যারে রয়েছে এবং আমরা এই অ্যারেটি Custom Objects এ ডেসিরিয়ালাইজ করতে চাই। নিচে একটি উদাহরণ দেওয়া হলো।

JSON Array (Multiple Persons) Example:

[
  {"name": "John Doe", "age": 30, "isStudent": false},
  {"name": "Jane Doe", "age": 25, "isStudent": true}
]

Custom Objects List তৈরি করা

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

public class JsonArrayDeserializationExample {
    public static void main(String[] args) {
        // JSON Array স্ট্রিং তৈরি করা
        String jsonArrayString = "[{\"name\":\"John Doe\",\"age\":30,\"isStudent\":false},"
                + "{\"name\":\"Jane Doe\",\"age\":25,\"isStudent\":true}]";

        // JSONParser ব্যবহার করে JSON স্ট্রিং পার্স করা
        JSONParser parser = new JSONParser();
        
        try {
            // JSON স্ট্রিং পার্স করে JSONArray তে রূপান্তর করা
            JSONArray jsonArray = (JSONArray) parser.parse(jsonArrayString);

            // JSON Array থেকে Custom Object List তৈরি করা
            List<Person> persons = new ArrayList<>();
            for (Object obj : jsonArray) {
                JSONObject jsonObject = (JSONObject) obj;

                // JSON Object থেকে মান বের করা এবং Person Object এ সেট করা
                Person person = new Person();
                person.setName((String) jsonObject.get("name"));
                person.setAge(((Long) jsonObject.get("age")).intValue());  // JSON.simple returns Long, so need to convert it
                person.setStudent((Boolean) jsonObject.get("isStudent"));

                // List এ Person অবজেক্ট যোগ করা
                persons.add(person);
            }

            // Person List প্রিন্ট করা
            for (Person person : persons) {
                System.out.println(person);
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

Output:

Person [name=John Doe, age=30, isStudent=false]
Person [name=Jane Doe, age=25, isStudent=true]

ব্যাখ্যা:

  • এখানে, একটি JSON অ্যারে থেকে Multiple Person Objects তৈরি করা হয়েছে।
  • JSON অ্যারেটি প্রথমে JSONArray তে পার্স করা হয়েছে এবং তারপর প্রতিটি JSONObject থেকে মান বের করে Person অবজেক্টের প্রপার্টিতে সেট করা হয়েছে।

  1. JSON.simple লাইব্রেরি ব্যবহার করে আপনি JSON ডেটা খুব সহজেই Custom Objects এ ডেসিরিয়ালাইজ করতে পারেন।
  2. JSONObject এবং JSONParser ব্যবহার করে JSON ফাইল বা স্ট্রিং থেকে ডেটা পড়ে Java অবজেক্টে রূপান্তর করা যায়।
  3. কাস্টম অবজেক্টে key-value পেয়ার ব্যবহার করে JSON ডেটা সহজভাবে ম্যানিপুলেট করা যায়।

JSON.simple লাইব্রেরি দিয়ে Custom Object Deserialization একটি কার্যকরী এবং সহজ পদ্ধতি, যা ডেটার আদান-প্রদান এবং ম্যানিপুলেশনকে আরও সহজ করে তোলে।

Content added By

JSON Deserialization হল প্রক্রিয়া যেখানে JSON ডেটা (যা সাধারণত স্ট্রিং বা JSON ফাইল হিসেবে থাকে) Java Object-এ রূপান্তরিত করা হয়। JSON.simple লাইব্রেরি ব্যবহার করে এই প্রক্রিয়াটি খুব সহজে করা যায়। এটি JSON string থেকে Java Object তৈরি করতে সহায়তা করে।

JSON.simple লাইব্রেরি দিয়ে JSON থেকে Java Object এ রূপান্তর (Deserialization)

Steps for Deserialization:

  1. JSON String তৈরি করা: প্রথমে JSON ডেটা স্ট্রিং তৈরি করতে হবে বা JSON ফাইল থেকে ডেটা পড়তে হবে।
  2. JSON Parsing: JSON স্ট্রিং বা JSON ফাইলকে JSONParser ব্যবহার করে পার্স করতে হবে।
  3. Java Object তৈরি করা: JSON অবজেক্টের ডেটা Java Object-এ রূপান্তরিত হবে।

উদাহরণ: JSON থেকে Java Object এ রূপান্তর (Deserialization)

Step 1: JSON String থেকে Java Object তৈরি করা

ধরা যাক, আমাদের একটি Person ক্লাস আছে এবং একটি JSON স্ট্রিং আছে, যেটি Person অবজেক্টে রূপান্তরিত হবে।

Person ক্লাস:

public class Person {
    private String name;
    private int age;
    private String city;

    // Constructor
    public Person(String name, int age, String city) {
        this.name = name;
        this.age = age;
        this.city = city;
    }

    // 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 String getCity() {
        return city;
    }

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

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", city=" + city + "]";
    }
}

Step 2: JSON String থেকে Java Object এ রূপান্তর

এখন, JSON স্ট্রিংটিকে Person ক্লাসের একটি অবজেক্টে রূপান্তর করতে হবে।

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

public class JsonDeserializationExample {
    public static void main(String[] args) {
        // JSON string (simulating data received from a web service or file)
        String jsonString = "{\"name\":\"John Doe\", \"age\":30, \"city\":\"New York\"}";

        // Create a JSON parser object
        JSONParser parser = new JSONParser();

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

            // Deserialize JSON to Java Object
            String name = (String) jsonObject.get("name");
            long age = (long) jsonObject.get("age"); // Age is returned as long, so we cast it to int
            String city = (String) jsonObject.get("city");

            // Create Person object from JSON data
            Person person = new Person(name, (int) age, city);

            // Print the Person object
            System.out.println(person);

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

ব্যাখ্যা:

  • JSONParser: JSON স্ট্রিংটি পার্স করার জন্য এটি ব্যবহার করা হয়েছে।
  • JSONObject: JSON অবজেক্টে ডেটা সংগৃহীত হয়।
  • Deserialization: JSON অবজেক্ট থেকে Java Object তৈরি করা হয় (এখানে Person অবজেক্ট)।
  • Casting: কিছু ক্ষেত্র যেমন age, long টাইপে ফেরত আসে, তাই তা int টাইপে কাস্ট করা হয়েছে।

Output:

Person [name=John Doe, age=30, city=New York]

এখানে JSON string থেকে একটি Person object তৈরি করা হয়েছে।


Step 3: JSON ফাইল থেকে Java Object তৈরি করা (Optional)

এখন, যদি JSON ডেটা ফাইলে থাকে, তাহলে সেই JSON ফাইল থেকে Java Object তৈরি করতে হবে।

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.FileReader;

public class JsonFileDeserializationExample {
    public static void main(String[] args) {
        // File containing JSON data
        String filePath = "person.json";

        // Create a JSON parser object
        JSONParser parser = new JSONParser();

        try {
            // Read JSON data from file and parse it
            FileReader reader = new FileReader(filePath);
            JSONObject jsonObject = (JSONObject) parser.parse(reader);

            // Deserialize JSON to Java Object
            String name = (String) jsonObject.get("name");
            long age = (long) jsonObject.get("age");
            String city = (String) jsonObject.get("city");

            // Create Person object from JSON data
            Person person = new Person(name, (int) age, city);

            // Print the Person object
            System.out.println(person);

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

JSON File Example (person.json):

{
    "name": "Alice",
    "age": 28,
    "city": "Los Angeles"
}

Output:

Person [name=Alice, age=28, city=Los Angeles]

এখানে, আমরা JSON file থেকে ডেটা পড়েছি এবং তা Person অবজেক্টে রূপান্তর করেছি।


  • Deserialization হল JSON ডেটাকে Java Object এ রূপান্তর করার প্রক্রিয়া।
  • JSON.simple লাইব্রেরি ব্যবহার করে JSON string বা JSON file থেকে Java Object তৈরি করা যায়।
  • JSONParser ব্যবহার করে JSON ডেটা পার্স (parse) করা হয় এবং JSONObject ব্যবহার করে সেই ডেটাকে Java Object-এ রূপান্তরিত করা হয়।

এটি একটি সিম্পল উদাহরণ ছিল যা JSON.simple লাইব্রেরি ব্যবহার করে JSON থেকে Java Object রূপান্তর করার প্রক্রিয়া দেখিয়েছে।

Content added By

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

Deserialization হল একটি প্রক্রিয়া যার মাধ্যমে একটি JSON স্ট্রিং বা JSON ফাইলকে Java অবজেক্টে রূপান্তরিত করা হয়। Java-এ JSON ডেটাকে অবজেক্টে রূপান্তর করতে বিভিন্ন লাইব্রেরি ব্যবহার করা হয়, যার মধ্যে JSON.simple অন্যতম। এটি সাধারণত একটি হালকা ও সহজ লাইব্রেরি যা JSON ডেটার পার্সিং এবং ডেটা ম্যানিপুলেশনের জন্য ব্যবহৃত হয়।

JSON.simple লাইব্রেরি দিয়ে Deserialization Best Practices

এখানে JSON.simple লাইব্রেরি ব্যবহার করে deserialization এর জন্য কিছু best practices আলোচনা করা হবে।


1. Proper Error Handling

JSON ডেটা যখন পার্স করা হয়, তখন সঠিকভাবে error handling করা অত্যন্ত গুরুত্বপূর্ণ, কারণ ফাইলটি যদি অবৈধ বা ভুল ফরম্যাটের হয়, তাহলে পার্সিং প্রক্রিয়া ব্যর্থ হতে পারে। ParseException এবং IOException এর মতো এক্সেপশনগুলিকে যথাযথভাবে হ্যান্ডেল করা উচিত।

Example:

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import java.io.FileReader;
import java.io.IOException;

public class JsonDeserializationExample {
    public static void main(String[] args) {
        // JSON প্যার্সার তৈরি করা
        JSONParser parser = new JSONParser();
        
        try (FileReader reader = new FileReader("data.json")) {
            // JSON ফাইল থেকে অবজেক্ট প্যার্স করা
            JSONObject jsonObject = (JSONObject) parser.parse(reader);
            
            // ডেটা ব্যবহার করা
            String name = (String) jsonObject.get("name");
            System.out.println("Name: " + name);
        } catch (IOException e) {
            // I/O এর ক্ষেত্রে exception handling
            System.err.println("File reading error: " + e.getMessage());
        } catch (ParseException e) {
            // JSON ফরম্যাট এর ক্ষেত্রে exception handling
            System.err.println("Invalid JSON format: " + e.getMessage());
        }
    }
}

Best Practice:

  • IOException: ফাইল রিডিং এর সময়ে সমস্যার জন্য।
  • ParseException: যদি JSON স্ট্রিং/ফাইলের ফরম্যাট ভুল থাকে।

2. Use Typed Java Objects for Deserialization

যখন আপনি JSON ডেটা পার্স করেন, তখন সঠিক Java অবজেক্ট টাইপ ব্যবহার করা গুরুত্বপূর্ণ। JSONObject এর মাধ্যমে সবকিছু Object হিসেবে পাওয়া যায়, সুতরাং আপনি type casting ব্যবহার করে সঠিক টাইপের অবজেক্টে রূপান্তর করতে পারেন।

Example:

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

public class JsonDeserializationExample {
    public static void main(String[] args) {
        JSONParser parser = new JSONParser();
        try {
            // JSON অবজেক্ট প্যার্স করা
            JSONObject jsonObject = (JSONObject) parser.parse("{\"name\":\"John\",\"age\":30}");
            
            // Type casting
            String name = (String) jsonObject.get("name");
            Long age = (Long) jsonObject.get("age");  // Note: JSON stores numbers as Long type

            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Best Practice:

  • JSON স্ট্রিং এর মান ধরার সময়ে সঠিক টাইপে কাস্টমাইজ করুন (যেমন, স্ট্রিং, সংখ্যা, বুলিয়ান ইত্যাদি)।
  • Long টাইপ ব্যবহার করুন যখন সংখ্যাগুলি বড় বা বড় সংখ্যা প্রয়োজন হয়, কারণ JSON এর মধ্যে সংখ্যাগুলি সাধারণত Long হিসেবে পার্স করা হয়।

3. Validate JSON Format Before Parsing

JSON ফাইল বা স্ট্রিং পার্স করার আগে আপনি প্রথমে নিশ্চিত করতে পারেন যে এটি সঠিক ফরম্যাটে রয়েছে। JSON.simple লাইব্রেরি নিজেই পার্সিংয়ের সময় ফরম্যাট চেক করে তবে আপনি JSON validation টুল ব্যবহার করে এই কাজটি আগেই করতে পারেন।

Example:

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

public class JsonFormatValidator {
    public static boolean isValidJson(String json) {
        try {
            // JSON স্ট্রিং পার্স করার চেষ্টা
            new JSONParser().parse(json);
            return true;
        } catch (ParseException e) {
            return false;  // Invalid JSON format
        }
    }

    public static void main(String[] args) {
        String json = "{\"name\":\"John\",\"age\":30}";
        
        if (isValidJson(json)) {
            System.out.println("Valid JSON format");
        } else {
            System.out.println("Invalid JSON format");
        }
    }
}

Best Practice:

  • JSON স্ট্রিং পার্স করার আগে JSON validity check করুন, যাতে ফাইল বা স্ট্রিং থেকে সঠিক ডেটা পাওয়ার নিশ্চয়তা থাকে।
  • isValidJson() ফাংশনটি ব্যবহার করে আপনি JSON ডেটার সঠিকতা যাচাই করতে পারেন।

4. Use Default Values for Missing Keys

JSON ডেটা থেকে কোনও কিওয়ারি যদি অনুপস্থিত থাকে, তবে আপনার কোডে এটি null হিসেবে থাকলে, প্রোগ্রাম ক্র্যাশ হতে পারে। সেক্ষেত্রে আপনি default values ব্যবহার করতে পারেন যাতে যখন কোনো কী পাওয়া না যায় তখন তা সঠিকভাবে হ্যান্ডেল করা যায়।

Example:

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

public class JsonDeserializationWithDefaults {
    public static void main(String[] args) {
        JSONParser parser = new JSONParser();
        try {
            // JSON প্যার্সিং
            JSONObject jsonObject = (JSONObject) parser.parse("{\"name\":\"John\"}");

            // JSON থেকে মান বের করা এবং default value ব্যবহার
            String name = (String) jsonObject.getOrDefault("name", "Unknown");
            Long age = (Long) jsonObject.getOrDefault("age", 0L);

            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Best Practice:

  • getOrDefault() ব্যবহার করে আপনি নির্দিষ্ট কিওয়ারি না পাওয়া গেলে একটি ডিফল্ট মান প্রদান করতে পারেন।
  • এটি প্রোগ্রামের ফ্লো বজায় রাখতে এবং ডেটা ফরম্যাটের ত্রুটি থেকে बचাতে সহায়তা করে।

5. Avoid Hardcoding JSON Structures

যতটা সম্ভব, JSON ডেটা hardcoded না করে, আপনি dynamic JSON ডেটা ব্যবহার করা উচিত। JSON ডেটার কিওয়ারি পরিবর্তিত হতে পারে, তাই flexibility নিশ্চিত করতে ডেটা গঠন পরিবর্তনশীল রাখা ভাল।

Example:

import org.json.simple.JSONObject;

public class DynamicJsonExample {
    public static void main(String[] args) {
        // JSON Object তৈরি
        JSONObject jsonObject = new JSONObject();
        
        // Dynamically adding data
        String key = "age";  // Can be dynamically fetched from some source
        Object value = 25;   // The value could change
        jsonObject.put(key, value);

        System.out.println(jsonObject);
    }
}

Best Practice:

  • JSON ফাইল বা স্ট্রিংয়ের কাঠামো যদি পরিবর্তনশীল হয়, তবে dynamic key-value pairs ব্যবহার করুন, যাতে সফটওয়্যারটি সুনির্দিষ্ট ডেটার সাথে সামঞ্জস্য রাখতে পারে।
  • এটা আপনাকে কোডের পুনঃব্যবহারযোগ্যতা এবং উন্নয়ন সহজ করবে।

  1. Proper Error Handling: JSON ডেটা পার্স করার সময় সঠিকভাবে error handling করুন।
  2. Typed Java Objects: type casting ব্যবহার করে সঠিক টাইপে ডেটা বের করুন।
  3. Validate JSON Format: JSON ফাইল বা স্ট্রিং পার্স করার আগে ফরম্যাট যাচাই করুন।
  4. Default Values: যখন কোনো কিওয়ারি অনুপস্থিত থাকে তখন default values ব্যবহার করুন।
  5. Avoid Hardcoding: JSON গঠনকে dynamic রাখুন।

এই Best Practices গুলি JSON.simple লাইব্রেরি দিয়ে Deserialization করার সময় ব্যবহার করলে আপনি কোডের মান এবং কার্যকারিতা বাড়াতে পারবেন।

Content added By

JSON.simple লাইব্রেরি দিয়ে JSON ডেটা থেকে Custom Java Object তৈরি করার প্রক্রিয়াকে Deserialization বলা হয়। এটি একটি গুরুত্বপূর্ণ টাস্ক যখন আপনি JSON ডেটা পার্স করতে চান এবং তা Java object এ রূপান্তর করতে চান। এই প্রক্রিয়ায়, JSON স্ট্রিং থেকে Java object তৈরি করা হয় যাতে আপনি সহজেই Java কোডের মধ্যে JSON ডেটা ম্যানিপুলেট করতে পারেন।

এখানে আমরা দেখব কিভাবে JSON.simple লাইব্রেরি ব্যবহার করে Custom Object কে JSON থেকে পার্স (deserialize) করা যায়।


ধাপ ১: Custom Java Class তৈরি করা

প্রথমে, একটি Custom Java Object তৈরি করতে হবে যাতে JSON ডেটা মাপা যাবে। ধরুন আমাদের একটি Employee ক্লাস তৈরি করতে হবে, যা JSON থেকে name, age, এবং city ফিল্ডগুলো ধারণ করবে।

1.1. Employee ক্লাস তৈরি করা

public class Employee {
    private String name;
    private int age;
    private String city;

    // Constructor
    public Employee(String name, int age, String city) {
        this.name = name;
        this.age = age;
        this.city = city;
    }

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

    public int getAge() {
        return age;
    }

    public String getCity() {
        return city;
    }

    // To String Method to print the Employee details
    @Override
    public String toString() {
        return "Employee [name=" + name + ", age=" + age + ", city=" + city + "]";
    }
}

এই ক্লাসে, আমরা name, age, এবং city ফিল্ডগুলো ধারণ করেছি এবং তাদের জন্য getter মেথড তৈরি করেছি। এছাড়া, একটি toString() মেথড আছে যা Employee অবজেক্টের ডিটেইল প্রিন্ট করবে।


ধাপ ২: JSON String তৈরি করা

ধরা যাক, আমাদের একটি JSON স্ট্রিং আছে যা একটি Employee অবজেক্টের ডেটা ধারণ করে।

2.1. JSON String (Sample JSON)

{
    "name": "John Doe",
    "age": 30,
    "city": "New York"
}

এটি একটি JSON স্ট্রিং যা একটি Employee অবজেক্টের তথ্য ধারণ করে।


ধাপ ৩: JSON String থেকে Custom Object (Employee) এ রূপান্তর

এখন আমরা দেখব কিভাবে JSON স্ট্রিং থেকে Employee অবজেক্ট তৈরি করা যায় JSON.simple লাইব্রেরি ব্যবহার করে।

3.1. JSON String থেকে Employee Object তৈরি করা

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

public class JsonToObjectExample {
    public static void main(String[] args) {
        // JSON String
        String jsonString = "{\"name\":\"John Doe\", \"age\":30, \"city\":\"New York\"}";

        // Create a JSONParser object
        JSONParser parser = new JSONParser();

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

            // Extract data from JSONObject and create Employee object
            String name = (String) jsonObject.get("name");
            long age = (long) jsonObject.get("age");
            String city = (String) jsonObject.get("city");

            // Create Employee object from the parsed data
            Employee employee = new Employee(name, (int) age, city);

            // Print the Employee object
            System.out.println(employee);

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

ব্যাখ্যা:

  • JSONParser: এটি JSON স্ট্রিং থেকে JSON অবজেক্ট (JSONObject) তৈরি করতে ব্যবহৃত হয়।
  • JSONObject: এটি JSON ডেটাকে key-value হিসেবে ধারণ করে এবং আপনি get() মেথড দিয়ে এর ফিল্ডগুলোর মান বের করতে পারেন।
  • Custom Object Creation: JSON থেকে ডেটা বের করার পর, আমরা সেই ডেটা ব্যবহার করে Employee অবজেক্ট তৈরি করেছি।

Output:

Employee [name=John Doe, age=30, city=New York]

এখানে, JSON স্ট্রিংটি Employee ক্লাসের একটি অবজেক্টে রূপান্তরিত হয়েছে।


ধাপ ৪: JSON ফাইল থেকে Custom Object (Employee) এ রূপান্তর

এখন, ধরে নিন আপনার একটি JSON ফাইল আছে এবং আপনি সেটি থেকে ডেটা নিয়ে একটি Custom Java Object (যেমন Employee) তৈরি করতে চান।

4.1. JSON ফাইল (employee.json)

{
    "name": "Jane Smith",
    "age": 28,
    "city": "Los Angeles"
}

4.2. JSON ফাইল থেকে Employee Object তৈরি করা

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.FileReader;
import java.io.IOException;
import org.json.simple.parser.ParseException;

public class JsonFileToObjectExample {
    public static void main(String[] args) {
        // JSON ফাইলের পাথ
        String filePath = "employee.json";
        
        // Create a JSONParser object
        JSONParser parser = new JSONParser();

        try {
            // JSON ফাইল পার্স করা
            Object obj = parser.parse(new FileReader(filePath));

            // JSON object এ কাস্টিং
            JSONObject jsonObject = (JSONObject) obj;

            // Extract data from JSONObject and create Employee object
            String name = (String) jsonObject.get("name");
            long age = (long) jsonObject.get("age");
            String city = (String) jsonObject.get("city");

            // Create Employee object
            Employee employee = new Employee(name, (int) age, city);

            // Print the Employee object
            System.out.println(employee);

        } catch (IOException | ParseException e) {
            e.printStackTrace();
        }
    }
}

Output:

Employee [name=Jane Smith, age=28, city=Los Angeles]

ব্যাখ্যা:

  • FileReader: এটি JSON ফাইলটি পড়তে ব্যবহৃত হয়।
  • JSONParser: JSON ফাইলটিকে JSONObject-এ পার্স (deserialize) করতে ব্যবহৃত হয়।
  • JSONObject থেকে ডেটা বের করে Employee অবজেক্ট তৈরি করা হয়েছে।

JSON.simple লাইব্রেরি ব্যবহার করে আপনি সহজেই JSON স্ট্রিং বা JSON ফাইল থেকে Custom Java Object (যেমন Employee) তৈরি করতে পারেন। এটি JSON ডেটাকে Java Object-এ রূপান্তরের একটি সহজ এবং কার্যকরী উপায় প্রদান করে।

  • Deserialization এর মাধ্যমে আপনি JSON ডেটাকে Java Object-এ রূপান্তর করতে পারেন।
  • JSON থেকে Java Object তৈরি করার জন্য JSONParser এবং JSONObject ব্যবহৃত হয়।
  • JSON ফাইল থেকে ডেটা পার্স করার জন্য FileReader এবং JSONParser ব্যবহার করা হয়।

এই প্রক্রিয়াটি JSON.simple লাইব্রেরি ব্যবহার করে JSON ডেটার সাথে কাজ করার জন্য খুবই কার্যকর।

Content added By
Promotion

Are you sure to start over?

Loading...