JSON Parsing (JSON থেকে Java Object এ রূপান্তর)

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

493

JSON.simple লাইব্রেরি ব্যবহার করে JSON ডেটা পার্স করে Java Object এ রূপান্তর (Deserialization) করা খুবই সহজ। এখানে আমরা দেখবো কিভাবে একটি JSON স্ট্রিং বা ফাইলকে Java Object-এ রূপান্তর করা যায়।

JSON Parsing: JSON থেকে Java Object এ রূপান্তর

JSON Parsing এর মাধ্যমে আপনি JSON ডেটাকে Java Object-এ রূপান্তর করতে পারেন। এটি সাধারণত JSON Parser এর মাধ্যমে করা হয়, যা JSON স্ট্রিং থেকে Java Object তৈরি করে।

ধাপ ১: JSON.simple লাইব্রেরি ইমপোর্ট করা

প্রথমেই আপনার প্রজেক্টে JSON.simple লাইব্রেরি যুক্ত করতে হবে (যদি ইতিমধ্যে না থাকে)। Maven বা Gradle দিয়ে এটি আপনার প্রজেক্টে যুক্ত করতে পারেন।

Maven Dependency:

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

Gradle Dependency:

dependencies {
    implementation 'com.googlecode.json-simple:json-simple:1.1.1'
}

ধাপ ২: JSON Parsing (JSON থেকে Java Object এ রূপান্তর)

ধরা যাক, আমাদের একটি JSON স্ট্রিং আছে যা একটি Employee তথ্য ধারণ করে, এবং আমরা এটি Java Object এ রূপান্তর করতে চাই।

2.1. JSON String (Sample JSON)

{
    "id": 1,
    "name": "John Doe",
    "department": "HR",
    "salary": 5000
}

এটি একটি সাধারণ JSON স্ট্রিং যেখানে একটি কর্মচারীর তথ্য রয়েছে। আমরা এটিকে Employee Java ক্লাসে রূপান্তর করতে চাই।

2.2. Java Class (Employee)

public class Employee {
    private int id;
    private String name;
    private String department;
    private double salary;

    // Constructor
    public Employee(int id, String name, String department, double salary) {
        this.id = id;
        this.name = name;
        this.department = department;
        this.salary = salary;
    }

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

    public String getName() {
        return name;
    }

    public String getDepartment() {
        return department;
    }

    public double getSalary() {
        return salary;
    }

    @Override
    public String toString() {
        return "Employee [id=" + id + ", name=" + name + ", department=" + department + ", salary=" + salary + "]";
    }
}

এখানে, Employee ক্লাসের মধ্যে আমরা id, name, department, এবং salary ফিল্ডগুলোর জন্য getter এবং constructor তৈরি করেছি।

2.3. JSON Parsing Code (JSON থেকে Java Object এ রূপান্তর)

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

public class JsonParsingExample {

    public static void main(String[] args) {
        String jsonString = "{ \"id\": 1, \"name\": \"John Doe\", \"department\": \"HR\", \"salary\": 5000 }";

        try {
            // JSONParser object creation
            JSONParser parser = new JSONParser();

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

            // Extracting values from JSONObject and creating an Employee object
            int id = ((Long) jsonObject.get("id")).intValue();  // Casting Long to int
            String name = (String) jsonObject.get("name");
            String department = (String) jsonObject.get("department");
            double salary = ((Long) jsonObject.get("salary")).doubleValue();  // Casting Long to double

            // Creating Employee object from the parsed data
            Employee employee = new Employee(id, name, department, salary);

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

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

ব্যাখ্যা:

  1. JSONParser: এটি JSON স্ট্রিংকে পার্স (parse) করার জন্য ব্যবহৃত হয়।
  2. JSONObject: এটি JSON ডেটা ধারণ করে এবং এর মাধ্যমে JSON এর বিভিন্ন ফিল্ড অ্যাক্সেস করা যায়।
  3. Extracting values: get() মেথডের মাধ্যমে JSON অবজেক্টের থেকে ডেটা বের করা হচ্ছে।
  4. Casting: JSON.simple এ Long টাইপের মান থাকে, তাই এটিকে int বা double-এ কাস্ট করা হচ্ছে।
  5. Employee Object: JSON থেকে বের করা মানগুলো ব্যবহার করে একটি Employee অবজেক্ট তৈরি করা হচ্ছে।

Output:

Employee [id=1, name=John Doe, department=HR, salary=5000.0]

এটি JSON ডেটাকে সফলভাবে Employee Java Object-এ রূপান্তর করেছে।


2.4. JSON File থেকে Java Object এ রূপান্তর

এখন, ধরুন আপনার কাছে একটি JSON File আছে এবং আপনি সেটিকে Java Object এ রূপান্তর করতে চান।

JSON File (employee.json)
{
    "id": 1,
    "name": "John Doe",
    "department": "HR",
    "salary": 5000
}
2.5. JSON File Parsing Code
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.FileReader;

public class JsonFileParsingExample {

    public static void main(String[] args) {
        try {
            // Create a JSON parser
            JSONParser parser = new JSONParser();

            // Reading the JSON file
            FileReader reader = new FileReader("employee.json");

            // Parsing the JSON file into JSONObject
            JSONObject jsonObject = (JSONObject) parser.parse(reader);

            // Extracting values and creating the Employee object
            int id = ((Long) jsonObject.get("id")).intValue();
            String name = (String) jsonObject.get("name");
            String department = (String) jsonObject.get("department");
            double salary = ((Long) jsonObject.get("salary")).doubleValue();

            // Creating the Employee object
            Employee employee = new Employee(id, name, department, salary);

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

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

ব্যাখ্যা:

  • FileReader: JSON ফাইলটি পড়তে ব্যবহৃত হয়।
  • JSONParser: JSON ফাইলটি পার্স (parse) করতে ব্যবহৃত হয়।
  • JSON ফাইল থেকে পার্স করা ডেটা Employee ক্লাসে রূপান্তর করা হয়েছে।

Output (ফাইলের জন্যও একই):

Employee [id=1, name=John Doe, department=HR, salary=5000.0]

JSON.simple লাইব্রেরি Java অ্যাপ্লিকেশনগুলিতে JSON ডেটার সাথে কাজ করার জন্য একটি খুব সহজ এবং কার্যকরী উপায় সরবরাহ করে। আপনি JSON স্ট্রিং বা JSON ফাইল থেকে Java Object-এ ডেটা রূপান্তর (parsing) করতে পারবেন সহজেই।

  • JSON.simple খুব হালকা এবং দ্রুত কাজ করে, কিন্তু জটিল ফিচারগুলির জন্য অন্য লাইব্রেরি যেমন Jackson বা Gson ব্যবহারের পরামর্শ দেয়া হতে পারে।
  • JSON থেকে Java Object-এ রূপান্তর বা Deserialization করার জন্য আপনি JSONParser এবং JSONObject ক্লাস ব্যবহার করতে পারেন।
Content added By

JSON.simple একটি Java লাইব্রেরি যা JSON ডেটা প্রসেস এবং প্রোসেসিং এর জন্য ব্যবহার করা হয়। এটি JSON string বা JSON file থেকে ডেটা পার্স (parse) করতে এবং সেটি Java object বা map হিসেবে অ্যাক্সেস করতে সহায়তা করে।

এই নিবন্ধে, আমরা JSON.simple ব্যবহার করে কিভাবে JSON ফাইল বা JSON স্ট্রিং পার্স করা যায় তা দেখবো।


1. JSON.simple লাইব্রেরি অন্তর্ভুক্ত করা

প্রথমে, আপনি যদি Maven ব্যবহার করেন, তাহলে আপনার pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করতে হবে:

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version> <!-- অথবা সর্বশেষ সংস্করণ -->
</dependency>

যদি আপনি Maven ব্যবহার না করেন, তবে JSON.simple JAR ফাইল ডাউনলোড করে প্রজেক্টে অন্তর্ভুক্ত করতে হবে।


2. JSON.simple দিয়ে JSON স্ট্রিং পার্স করা

Example: JSON স্ট্রিং পার্স করা

ধরা যাক, আপনার কাছে একটি JSON স্ট্রিং রয়েছে, যা আপনি পার্স করতে চান। JSON স্ট্রিংটিকে Java object বা map হিসেবে পার্স করার জন্য নিচের কোডটি ব্যবহার করতে পারেন:

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

public class JSONParseExample {
    public static void main(String[] args) {
        // JSON String
        String jsonString = "{\"name\":\"John\", \"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);

            // Retrieve data from the JSON object
            String name = (String) jsonObject.get("name");
            long age = (long) jsonObject.get("age");
            String city = (String) jsonObject.get("city");

            // Print the data
            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
            System.out.println("City: " + city);

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

Output:

Name: John
Age: 30
City: New York

Explanation:

  • JSONParser: এটি JSON স্ট্রিংকে JSONObject-এ পার্স করতে ব্যবহৃত হয়।
  • JSONObject: এটি JSON ডেটাকে key-value pairs হিসেবে সংরক্ষণ করে।
  • get() Method: JSON object থেকে মান বের করার জন্য get() মেথড ব্যবহার করা হয়।

3. JSON.simple দিয়ে JSON ফাইল পার্স করা

আপনি যদি JSON file থেকে ডেটা পার্স করতে চান, তবে সেই ফাইলটি পড়তে হবে এবং পার্স করতে হবে। নিচে JSON ফাইল পার্স করার একটি উদাহরণ দেওয়া হল।

Example: JSON ফাইল পার্স করা

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 JSONFileParseExample {
    public static void main(String[] args) {
        // JSON ফাইল পাথ
        String filePath = "path/to/your/file.json";

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

        try {
            // FileReader দিয়ে JSON ফাইলটি পড়া
            FileReader reader = new FileReader(filePath);

            // JSON ফাইল পার্স করা
            JSONObject jsonObject = (JSONObject) parser.parse(reader);

            // Retrieve data from the JSON object
            String name = (String) jsonObject.get("name");
            long age = (long) jsonObject.get("age");
            String city = (String) jsonObject.get("city");

            // Print the data
            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
            System.out.println("City: " + city);

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

Example JSON File (file.json):

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

Output:

Name: Alice
Age: 25
City: Los Angeles

Explanation:

  • FileReader: এটি JSON ফাইলটি পড়তে ব্যবহার করা হয়।
  • JSONParser: JSON ডেটাকে JSONObject-এ পার্স করতে ব্যবহৃত হয়।

4. JSON.simple ব্যবহার করে Nested JSON Object এবং JSONArray পার্স করা

JSON.simple দিয়ে আপনি nested JSON objects এবং JSON arrays (যেমন: list বা array) থেকেও ডেটা পার্স করতে পারবেন।

Example: Nested JSON Object এবং JSONArray পার্স করা

import org.json.simple.JSONArray;
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 NestedJSONParseExample {
    public static void main(String[] args) {
        // JSON String with Nested Objects and Arrays
        String jsonString = "{\"name\":\"John\", \"age\":30, \"address\":{\"street\":\"123 Main St\", \"city\":\"New York\"}, \"phoneNumbers\":[\"123-4567\", \"987-6543\"]}";

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

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

            // Retrieve simple data
            String name = (String) jsonObject.get("name");
            long age = (long) jsonObject.get("age");

            // Retrieve nested JSON object (address)
            JSONObject address = (JSONObject) jsonObject.get("address");
            String street = (String) address.get("street");
            String city = (String) address.get("city");

            // Retrieve JSON array (phoneNumbers)
            JSONArray phoneNumbers = (JSONArray) jsonObject.get("phoneNumbers");
            String phone1 = (String) phoneNumbers.get(0);
            String phone2 = (String) phoneNumbers.get(1);

            // Print the data
            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
            System.out.println("Street: " + street);
            System.out.println("City: " + city);
            System.out.println("Phone 1: " + phone1);
            System.out.println("Phone 2: " + phone2);

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

Output:

Name: John
Age: 30
Street: 123 Main St
City: New York
Phone 1: 123-4567
Phone 2: 987-6543

Explanation:

  • JSONObject: একটি JSON object যা key-value pairs ধারণ করে।
  • JSONArray: একটি JSON array যা values ধারণ করে।
  • Nested JSON Object: একটি JSON object এর মধ্যে অন্য একটি JSON object থাকতে পারে।
  • JSONArray Access: JSONArray থেকে ডেটা অ্যাক্সেস করতে get(index) মেথড ব্যবহার করা হয়।

JSON.simple একটি শক্তিশালী এবং সহজে ব্যবহৃত লাইব্রেরি যা JSON ডেটাকে পার্স করতে সাহায্য করে। আপনি JSON স্ট্রিং বা JSON ফাইল থেকে ডেটা পার্স করতে পারেন এবং সেই ডেটাকে Java object বা map হিসেবে ব্যবহার করতে পারেন। এর মাধ্যমে আপনি nested JSON objects এবং arrays-এর ডেটা সহজে অ্যাক্সেস করতে পারবেন।

JSON.simple ব্যবহার করার মাধ্যমে, আপনি parse করা JSON ডেটা সহজে retrieve করতে পারবেন এবং তা Java অ্যাপ্লিকেশনের মধ্যে ব্যবহার করতে পারবেন।

Content added By

JSON.simple হল একটি সিম্পল এবং হালকা ওজনের Java লাইব্রেরি যা JSON ডেটা পার্স এবং ম্যানিপুলেট করার জন্য ব্যবহৃত হয়। এটি JSONObject এবং JSONArray এর মতো ক্লাস সরবরাহ করে, যা JSON ডেটা তৈরি, পার্স, এবং প্রসেস করার জন্য ব্যবহার করা হয়।

এই নিবন্ধে আমরা JSON.simple এর JSONObject এবং JSONArray এর সাথে কাজ করার কিছু গুরুত্বপূর্ণ টিপস এবং উদাহরণ দেখব।


1. JSONObject (JSON Object) এর সাথে কাজ করা

JSONObject হল একটি JSON অবজেক্ট, যা সাধারণত একটি key-value pair ধারণ করে। এটি Java-তে একটি Map এর মতো কাজ করে।

1.1. JSONObject তৈরি করা এবং ডেটা যোগ করা

import org.json.simple.JSONObject;

public class JsonExample {
    public static void main(String[] args) {
        // JSONObject তৈরি করা
        JSONObject obj = new JSONObject();
        
        // JSON Object এ ডেটা যোগ করা
        obj.put("name", "John Doe");
        obj.put("age", 30);
        obj.put("city", "New York");

        // JSON Object প্রিন্ট করা
        System.out.println(obj);
    }
}

Output:

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

এখানে, put() মেথডের মাধ্যমে key-value pair হিসেবে ডেটা যোগ করা হয়েছে এবং তারপর JSONObject প্রিন্ট করা হয়েছে।


1.2. JSONObject থেকে ডেটা বের করা

একবার JSON অবজেক্ট তৈরি করা হলে, আপনি এর মধ্যে সংরক্ষিত value গুলি key দিয়ে অ্যাক্সেস করতে পারেন।

import org.json.simple.JSONObject;

public class JsonExample {
    public static void main(String[] args) {
        // JSON Object তৈরি করা
        JSONObject obj = new JSONObject();
        obj.put("name", "John Doe");
        obj.put("age", 30);
        
        // JSON Object থেকে ডেটা বের করা
        String name = (String) obj.get("name");
        long age = (long) obj.get("age");
        
        // ডেটা প্রিন্ট করা
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
    }
}

Output:

Name: John Doe
Age: 30

এখানে, get() মেথডের মাধ্যমে JSON অবজেক্ট থেকে key অনুযায়ী value বের করা হয়েছে।


2. JSONArray (JSON Array) এর সাথে কাজ করা

JSONArray একটি JSON অ্যারে যা একাধিক values ধারণ করতে পারে। এটি Java-তে একটি List এর মতো কাজ করে।

2.1. JSONArray তৈরি করা এবং ডেটা যোগ করা

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

public class JsonExample {
    public static void main(String[] args) {
        // JSONArray তৈরি করা
        JSONArray list = new JSONArray();
        
        // JSONArray তে ডেটা যোগ করা
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");

        // JSONArray প্রিন্ট করা
        System.out.println(list);
    }
}

Output:

["Apple","Banana","Orange"]

এখানে, add() মেথডের মাধ্যমে JSONArray তে ভ্যালু যোগ করা হয়েছে এবং তারপর JSONArray প্রিন্ট করা হয়েছে।


2.2. JSONArray থেকে ডেটা বের করা

JSON অ্যারে থেকে ডেটা বের করার জন্য get() মেথড ব্যবহার করা হয়।

import org.json.simple.JSONArray;

public class JsonExample {
    public static void main(String[] args) {
        // JSONArray তৈরি করা
        JSONArray list = new JSONArray();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");

        // JSONArray থেকে ডেটা বের করা
        String firstItem = (String) list.get(0);
        String secondItem = (String) list.get(1);

        // ডেটা প্রিন্ট করা
        System.out.println("First item: " + firstItem);
        System.out.println("Second item: " + secondItem);
    }
}

Output:

First item: Apple
Second item: Banana

এখানে, get() মেথডের মাধ্যমে JSONArray থেকে ভ্যালু বের করা হয়েছে, এবং ইনডেক্স ব্যবহার করে বিভিন্ন উপাদান অ্যাক্সেস করা হয়েছে।


3. JSONObject এবং JSONArray একত্রে ব্যবহার করা

JSONObject এবং JSONArray একত্রে ব্যবহার করে আপনি আরও জটিল JSON স্ট্রাকচার তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি একটি JSON অবজেক্টে একটি অ্যারে রাখতে পারেন।

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

public class JsonExample {
    public static void main(String[] args) {
        // JSON Object তৈরি করা
        JSONObject obj = new JSONObject();
        
        // JSONArray তৈরি করা
        JSONArray list = new JSONArray();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        
        // JSONArray কে JSONObject এর মধ্যে যোগ করা
        obj.put("fruits", list);
        
        // JSON Object প্রিন্ট করা
        System.out.println(obj);
    }
}

Output:

{"fruits":["Apple","Banana","Orange"]}

এখানে, JSONArray কে JSONObject এর একটি ফিল্ড হিসেবে put() মেথডের মাধ্যমে যুক্ত করা হয়েছে।


4. JSON.simple JSON File পার্স করা

আপনি যদি একটি JSON ফাইল পার্স করতে চান, তবে JSON.simple লাইব্রেরির JSONParser ব্যবহার করে JSON ফাইল পার্স করা সম্ভব। এটি আপনার JSON ডেটাকে JSONObject বা JSONArray-এ রূপান্তর করবে।

Example: JSON File Parsing

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

public class JsonExample {
    public static void main(String[] args) {
        try {
            // JSON ফাইল পার্স করা
            JSONParser parser = new JSONParser();
            JSONObject obj = (JSONObject) parser.parse(new FileReader("path/to/your/file.json"));
            
            // JSONObject থেকে ডেটা বের করা
            String name = (String) obj.get("name");
            long age = (long) obj.get("age");
            
            // JSONArray থেকে ডেটা বের করা
            JSONArray list = (JSONArray) obj.get("fruits");
            System.out.println("Fruits: " + list);

            // ডেটা প্রিন্ট করা
            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

এই উদাহরণে, JSONParser ব্যবহার করে একটি JSON ফাইল পার্স করা হয়েছে এবং তার পর JSONObject এবং JSONArray থেকে ডেটা বের করা হয়েছে।


JSON.simple একটি লাইটওয়েট এবং সিম্পল লাইব্রেরি যা Java অ্যাপ্লিকেশনে JSON ডেটা পার্সিং এবং ম্যানিপুলেট করার জন্য ব্যবহৃত হয়। JSONObject এবং JSONArray এর সাহায্যে আপনি সহজেই JSON ডেটা তৈরি এবং প্রক্রিয়া করতে পারেন। এর মাধ্যমে আপনি key-value pairs, arrays, এবং nested structures তৈরি করতে সক্ষম হবেন, যা বিভিন্ন ধরনের অ্যাপ্লিকেশনের জন্য উপযুক্ত।

উপরে দেওয়া উদাহরণগুলি আপনাকে JSON.simple এর JSONObject এবং JSONArray ব্যবহার করার বিভিন্ন দিক সম্পর্কে ধারণা দিতে সাহায্য করবে, এবং এটি JSON ডেটা হ্যান্ডলিংয়ের জন্য খুবই কার্যকরী।

Content added By

JSON.simple হল একটি সোজা এবং সহজ লাইব্রেরি যা JSON ডেটা তৈরি, পার্স এবং প্রক্রিয়া করার জন্য ব্যবহৃত হয়। JSON ডেটা সাধারণত key-value pairs আকারে থাকে, এবং JSON.simple এর মাধ্যমে আপনি এই key-value পেয়ার থেকে ডেটা অ্যাক্সেস করতে পারেন।

এই নিবন্ধে, আমরা দেখব কিভাবে JSON.simple ব্যবহার করে key-value pairs থেকে ডেটা অ্যাক্সেস করা যায়।


1. JSON.simple এর মাধ্যমে Key-Value পেয়ার তৈরি করা

প্রথমে একটি JSONObject তৈরি করতে হবে, যা key-value পেয়ার ধারণ করে। এরপর সেই JSON অবজেক্ট থেকে ডেটা অ্যাক্সেস করতে হবে।

Step 1: JSONObject তৈরি করা

import org.json.simple.JSONObject;

public class JsonExample {
    public static void main(String[] args) {
        // Create a new JSONObject
        JSONObject obj = new JSONObject();

        // Add key-value pairs to the JSONObject
        obj.put("name", "John Doe");
        obj.put("age", 30);
        obj.put("city", "New York");

        // Print the JSONObject
        System.out.println(obj);
    }
}

Output:

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

এখানে, আমরা একটি JSONObject তৈরি করেছি এবং name, age, এবং city এর জন্য key-value পেয়ার সংরক্ষণ করেছি।


2. Key-Value পেয়ার থেকে ডেটা অ্যাক্সেস করা

একবার JSONObject তৈরি হয়ে গেলে, আপনি get() মেথড ব্যবহার করে নির্দিষ্ট key এর মাধ্যমে ডেটা অ্যাক্সেস করতে পারেন। JSON.simple এ key-value pairs থেকে ডেটা অ্যাক্সেস করার জন্য আপনাকে সঠিক key ব্যবহার করতে হবে।

Step 2: Key-Value পেয়ার থেকে ডেটা অ্যাক্সেস করা

import org.json.simple.JSONObject;

public class JsonExample {
    public static void main(String[] args) {
        // Create a new JSONObject
        JSONObject obj = new JSONObject();

        // Add key-value pairs to the JSONObject
        obj.put("name", "John Doe");
        obj.put("age", 30);
        obj.put("city", "New York");

        // Access data from JSONObject using key
        String name = (String) obj.get("name");
        Long age = (Long) obj.get("age");
        String city = (String) obj.get("city");

        // Print the accessed data
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        System.out.println("City: " + city);
    }
}

Output:

Name: John Doe
Age: 30
City: New York

এখানে, obj.get("name"), obj.get("age"), এবং obj.get("city") ব্যবহার করে আমরা JSON অবজেক্ট থেকে ডেটা অ্যাক্সেস করেছি।

Note: JSON.simple-এ ডেটা অ্যাক্সেস করার সময়, ডেটার টাইপ অনুযায়ী কাস্টিং করতে হয়। উদাহরণস্বরূপ, age একটি Long টাইপ, তাই সেটিকে Long-এ কাস্ট করা হয়েছে।


3. JSON.simple এর মাধ্যমে Nested JSON Objects থেকে ডেটা Access করা

কখনও কখনও JSON অবজেক্টগুলির মধ্যে nested objects থাকে। এই ক্ষেত্রে, আপনি nested JSON objects থেকে ডেটা অ্যাক্সেস করতে পারেন।

Example: Nested JSON Object

import org.json.simple.JSONObject;

public class NestedJsonExample {
    public static void main(String[] args) {
        // Create a new JSONObject
        JSONObject obj = new JSONObject();

        // Create a nested JSONObject
        JSONObject address = new JSONObject();
        address.put("street", "123 Main St");
        address.put("city", "New York");
        address.put("zip", "10001");

        // Add nested object to the main JSONObject
        obj.put("name", "John Doe");
        obj.put("age", 30);
        obj.put("address", address);

        // Access data from the nested JSONObject
        String name = (String) obj.get("name");
        Long age = (Long) obj.get("age");
        JSONObject nestedAddress = (JSONObject) obj.get("address");

        // Accessing nested data
        String street = (String) nestedAddress.get("street");
        String city = (String) nestedAddress.get("city");
        String zip = (String) nestedAddress.get("zip");

        // Print the accessed data
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        System.out.println("Address: " + street + ", " + city + ", " + zip);
    }
}

Output:

Name: John Doe
Age: 30
Address: 123 Main St, New York, 10001

এখানে, address একটি nested JSONObject ছিল, যা obj.put("address", address) এর মাধ্যমে প্রধান অবজেক্টে যোগ করা হয়েছিল। পরে, nestedAddress.get("street") ইত্যাদি ব্যবহার করে nested JSON object থেকে ডেটা অ্যাক্সেস করা হয়েছে।


4. JSONArray ব্যবহার করে ডেটা অ্যাক্সেস করা

JSON.simple JSONArray ব্যবহার করে ডেটার তালিকা (array) ধারণ করতে পারে। যদি আপনি একটি JSON array ব্যবহার করতে চান, তাহলে JSONArray ব্যবহার করবেন এবং এর মধ্যে JSON objects বা values যোগ করতে পারবেন।

Example: JSONArray with Key-Value pairs

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

public class JsonArrayExample {
    public static void main(String[] args) {
        // Create a new JSONObject
        JSONObject obj = new JSONObject();

        // Create a JSONArray
        JSONArray employeeList = new JSONArray();

        // Add employee details to the JSONArray
        JSONObject employee1 = new JSONObject();
        employee1.put("name", "John");
        employee1.put("age", 30);
        employee1.put("position", "Developer");

        JSONObject employee2 = new JSONObject();
        employee2.put("name", "Jane");
        employee2.put("age", 28);
        employee2.put("position", "Designer");

        // Add employees to the array
        employeeList.add(employee1);
        employeeList.add(employee2);

        // Add the array to the main JSONObject
        obj.put("employees", employeeList);

        // Access data from the JSONArray
        JSONArray employees = (JSONArray) obj.get("employees");
        JSONObject firstEmployee = (JSONObject) employees.get(0);

        String name = (String) firstEmployee.get("name");
        Long age = (Long) firstEmployee.get("age");
        String position = (String) firstEmployee.get("position");

        // Print the data from JSONArray
        System.out.println("Employee Name: " + name);
        System.out.println("Employee Age: " + age);
        System.out.println("Employee Position: " + position);
    }
}

Output:

Employee Name: John
Employee Age: 30
Employee Position: Developer

এখানে, একটি JSONArray তৈরি করা হয়েছে, যেখানে দুইটি JSONObject রয়েছে। প্রতিটি employee এর ডেটা অ্যাক্সেস করার জন্য JSONArray এর মধ্যে থেকে আমরা get(0) বা get(1) ব্যবহার করেছি।


  • JSON.simple ব্যবহার করে আপনি key-value pairs থেকে ডেটা অ্যাক্সেস করতে পারেন, যেখানে JSONObject থেকে get() মেথড ব্যবহার করা হয়।
  • nested JSON objects থেকে ডেটা অ্যাক্সেস করার জন্য আপনি nested get() মেথড ব্যবহার করতে পারেন।
  • JSONArray ব্যবহার করে আপনি JSON arrays এর মধ্যে JSON objects বা values অ্যাক্সেস করতে পারেন।
  • JSON.simple লাইব্রেরি ব্যবহার করে আপনি সহজেই JSON parsing, generation, এবং serialization/deserialization কার্যক্রম সম্পাদন করতে পারেন।

এই টিউটোরিয়াল আপনাকে JSON.simple দিয়ে key-value pairs থেকে ডেটা অ্যাক্সেস এবং কাস্টমাইজ করতে সাহায্য করবে।

Content added By

JSON.simple হল একটি হালকা ওজনের লাইব্রেরি যা Java-তে JSON ডেটা প্রক্রিয়াকরণ করতে ব্যবহৃত হয়। এটি সাধারণত ছোট বা মাঝারি আকারের JSON ডেটা পরিচালনা করতে ব্যবহৃত হয়। তবে complex JSON (যেমন nested JSON objects, arrays) পার্স করার জন্যও এটি ব্যবহার করা যেতে পারে।

এখানে, আমরা দেখব কিভাবে JSON.simple ব্যবহার করে complex JSON (যেমন: nested objects, arrays) পার্স করা যায়।


1. Complex JSON Structure Example

ধরা যাক, আমাদের কাছে একটি JSON অবজেক্ট রয়েছে যা nested JSON objects এবং arrays ধারণ করে। নিচে এর একটি উদাহরণ দেওয়া হলো:

{
  "employee": {
    "id": 101,
    "name": "John Doe",
    "position": "Software Engineer",
    "skills": ["Java", "Python", "C++"],
    "address": {
      "street": "123 Main St",
      "city": "New York",
      "zip": "10001"
    }
  },
  "department": "Engineering",
  "company": "Tech Solutions"
}

এই JSON অবজেক্টে:

  • employee একটি nested JSON object
  • skills একটি JSON array
  • address একটি আরেকটি nested JSON object

2. Complex JSON Parsing Example using JSON.simple

এখন, আমরা এই complex JSON ডেটা পার্স করব JSON.simple ব্যবহার করে।

Step 1: JSON.simple লাইব্রেরি অন্তর্ভুক্ত করা

প্রথমে, আপনাকে JSON.simple লাইব্রেরি প্রোজেক্টে অন্তর্ভুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তবে pom.xml-এ নিচের dependency যোগ করুন:

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

অথবা, যদি আপনি সরাসরি JAR ফাইল ব্যবহার করেন, তবে JSON.simple-এর JAR ফাইল ডাউনলোড করুন এবং classpath এ যুক্ত করুন।

Step 2: JSON Parsing Code

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

public class ComplexJSONParsing {
    public static void main(String[] args) {
        String jsonString = "{" +
            "\"employee\": {" +
            "\"id\": 101," +
            "\"name\": \"John Doe\"," +
            "\"position\": \"Software Engineer\"," +
            "\"skills\": [\"Java\", \"Python\", \"C++\"]," +
            "\"address\": {" +
            "\"street\": \"123 Main St\"," +
            "\"city\": \"New York\"," +
            "\"zip\": \"10001\"" +
            "}" +
            "}," +
            "\"department\": \"Engineering\"," +
            "\"company\": \"Tech Solutions\"" +
            "}";

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

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

            // Extracting the employee object
            JSONObject employee = (JSONObject) jsonObject.get("employee");

            // Extracting employee details
            Long id = (Long) employee.get("id");
            String name = (String) employee.get("name");
            String position = (String) employee.get("position");

            // Extracting skills (JSONArray)
            JSONArray skills = (JSONArray) employee.get("skills");

            // Extracting address (nested JSON object)
            JSONObject address = (JSONObject) employee.get("address");
            String street = (String) address.get("street");
            String city = (String) address.get("city");
            String zip = (String) address.get("zip");

            // Extracting other details
            String department = (String) jsonObject.get("department");
            String company = (String) jsonObject.get("company");

            // Output the parsed data
            System.out.println("Employee ID: " + id);
            System.out.println("Name: " + name);
            System.out.println("Position: " + position);
            System.out.println("Skills: " + skills);
            System.out.println("Address: " + street + ", " + city + ", " + zip);
            System.out.println("Department: " + department);
            System.out.println("Company: " + company);

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

Explanation of the Code:

  1. JSONParser: প্রথমে একটি JSONParser অবজেক্ট তৈরি করা হয়, যা jsonString পাস করে JSON ডেটাকে JSONObject-এ পার্স করে।
  2. Nested JSON Objects: employee এবং address হল nested JSON objects। আমরা employee এবং address কে আলাদাভাবে পার্স করেছি।
  3. JSONArray: skills হল একটি JSONArray (অ্যারেগুলির একটি তালিকা)। আমরা এই অ্যারে থেকে বিভিন্ন স্কিল ভ্যালু একে একে নিয়ে এসেছি।
  4. Extracting Data: jsonObject.get("key") এর মাধ্যমে প্রতিটি ফিল্ডের ডেটা এক্সট্র্যাক্ট করেছি এবং প্রয়োজনীয়ভাবে কাস্টমাইজ করেছি।
  5. Printing the Data: সবশেষে, পার্স করা ডেটা কনসোলে প্রিন্ট করা হয়েছে।

Output:

Employee ID: 101
Name: John Doe
Position: Software Engineer
Skills: [Java, Python, C++]
Address: 123 Main St, New York, 10001
Department: Engineering
Company: Tech Solutions

3. Complex JSON Parsing: Error Handling

JSON ডেটা পার্স করার সময় error handling খুবই গুরুত্বপূর্ণ। যদি JSON ফাইলের গঠন সঠিক না হয় বা যদি কোনো key মিসিং থাকে, তাহলে ParseException বা NullPointerException ঘটতে পারে। তাই এই ধরনের ত্রুটি সমাধানের জন্য আপনাকে সঠিকভাবে exception handling করতে হবে।

Error Handling Example:

try {
    JSONObject jsonObject = (JSONObject) parser.parse(jsonString);
    
    // Extracting nested object and array
    JSONObject employee = (JSONObject) jsonObject.get("employee");
    
    // If 'skills' is missing or null
    if (employee.containsKey("skills")) {
        JSONArray skills = (JSONArray) employee.get("skills");
        System.out.println("Skills: " + skills);
    } else {
        System.out.println("No skills found.");
    }
} catch (ParseException e) {
    System.out.println("Error parsing the JSON data: " + e.getMessage());
} catch (NullPointerException e) {
    System.out.println("Null data encountered: " + e.getMessage());
}

4. Performance Tips for Complex JSON Parsing

  1. Use Efficient Data Types: Complex JSON objects পার্স করার সময় ডেটা টাইপের সঠিক ব্যবহার খুবই গুরুত্বপূর্ণ। বড় JSON ফাইল হলে JSONArray এবং JSONObject থেকে প্রয়োজনীয় ডেটা এক্সট্র্যাক্ট করার সময় efficient ডেটা স্ট্রাকচার ব্যবহার করুন।
  2. Lazy Parsing: বড় JSON ডেটা বা ফাইল প্রসেস করতে হলে lazy parsing এর মাধ্যমে একসাথে পুরো ডেটা মেমরিতে লোড না করে প্রয়োজনীয় অংশগুলিই ধাপে ধাপে পার্স করুন।
  3. Error Handling: JSON ডেটার গঠন সঠিক না হলে অথবা কোনো কিপর্যন্ত ডেটা পাওয়া না গেলে তা সঠিকভাবে exception handling করতে হবে।

JSON.simple লাইব্রেরি ব্যবহার করে আপনি complex JSON parsing সহজেই করতে পারেন, যেখানে nested objects, arrays, এবং অন্যান্য ডেটা কমপ্লেক্স গঠন রয়েছে। এই লাইব্রেরি ছোট এবং মাঝারি আকারের JSON ডেটার জন্য খুবই কার্যকরী। আপনি JSON.simple ব্যবহার করে সহজে parsing, data extraction, এবং error handling করতে পারেন, যা আপনাকে দ্রুত JSON ডেটার সঙ্গে কাজ করতে সাহায্য করবে।

Content added By
Promotion

Are you sure to start over?

Loading...