JSON.simple এর মাধ্যমে Querying এবং Searching

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

275

JSON.simple একটি সিম্পল এবং লাইটওয়েট লাইব্রেরি যা JSON ডেটা পার্সিং এবং জেনারেশন এর জন্য ব্যবহৃত হয়। এই লাইব্রেরি JSON ডেটা তৈরি, পড়া এবং তা থেকে তথ্য অ্যাক্সেস (querying) করার সুবিধা দেয়। যদিও JSON.simple-এ SQL-style querying বা searching এর মতো built-in ফিচার নেই, তবে আপনি Java এর অন্যান্য ডেটা স্ট্রাকচার ব্যবহার করে সহজেই JSON ডেটার মধ্যে অনুসন্ধান এবং কুয়েরি করতে পারেন।

এই নিবন্ধে, আমরা দেখব কিভাবে JSON.simple ব্যবহার করে JSON ডেটা থেকে querying এবং searching করতে হয়।


1. JSON.simple: Basic Searching with JSON

ধরা যাক, আমাদের কাছে একটি JSON অবজেক্ট রয়েছে যা কিছু key-value pairs ধারণ করছে, এবং আমরা সেই ডেটার মধ্যে নির্দিষ্ট একটি key বা value খুঁজে বের করতে চাই।

Step 1: JSON Object তৈরি করা

import org.json.simple.JSONObject;

public class JsonSearchExample {
    public static void main(String[] args) {
        // Create a JSON object
        JSONObject obj = new JSONObject();
        obj.put("name", "John Doe");
        obj.put("age", 30);
        obj.put("city", "New York");

        // Search for a value by key
        String name = (String) obj.get("name");
        Integer age = (Integer) obj.get("age");
        String city = (String) obj.get("city");

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

Explanation:

  • এখানে একটি JSONObject তৈরি করা হয়েছে এবং তাতে key-value pairs যোগ করা হয়েছে।
  • তারপর, obj.get("key") মেথড ব্যবহার করে আমরা নির্দিষ্ট key এর মান অ্যাক্সেস করেছি।

Output:

Name: John Doe
Age: 30
City: New York

এখানে, JSON অবজেক্ট থেকে name, age, এবং city এর মান অ্যাক্সেস করা হয়েছে।


2. Searching Through JSON Array

JSONArray ব্যবহার করে আপনি একাধিক অবজেক্টের মধ্যে অনুসন্ধান করতে পারেন। উদাহরণস্বরূপ, যদি আপনার কাছে একটি JSON অ্যারে থাকে, যেখানে প্রতিটি অবজেক্টের মধ্যে key-value pairs রয়েছে, তবে আপনি অ্যারে থেকে নির্দিষ্ট তথ্য খুঁজে বের করতে পারেন।

Example: Searching through JSON Array

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

public class JsonArraySearchExample {
    public static void main(String[] args) {
        // Create JSON objects
        JSONObject person1 = new JSONObject();
        person1.put("name", "John Doe");
        person1.put("age", 30);
        person1.put("city", "New York");

        JSONObject person2 = new JSONObject();
        person2.put("name", "Jane Smith");
        person2.put("age", 25);
        person2.put("city", "Los Angeles");

        // Create a JSON array
        JSONArray peopleArray = new JSONArray();
        peopleArray.add(person1);
        peopleArray.add(person2);

        // Search through the array
        for (Object obj : peopleArray) {
            JSONObject person = (JSONObject) obj;
            String name = (String) person.get("name");
            if (name.equals("Jane Smith")) {
                System.out.println("Found: " + person);
            }
        }
    }
}

Explanation:

  • এখানে, দুটি JSONObject তৈরি করা হয়েছে, প্রতিটি name, age, এবং city এর key-value পেয়ার ধারণ করে।
  • এই JSONObject গুলোকে একটি JSONArray-তে রাখা হয়েছে।
  • তারপর, অ্যারেটির মধ্যে একটি for loop ব্যবহার করে নির্দিষ্ট name (Jane Smith) খুঁজে বের করা হয়েছে এবং তা কনসোলে প্রিন্ট করা হয়েছে।

Output:

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

এখানে, JSONArray-এর মধ্যে নির্দিষ্ট name (Jane Smith) খুঁজে বের করা হয়েছে এবং সেই অবজেক্টটি কনসোলে আউটপুট হয়েছে।


3. Searching and Querying in Nested JSON Objects

আপনি যদি nested JSON objects এর মধ্যে searching বা querying করতে চান, তবে আপনাকে প্রথমে nested object অ্যাক্সেস করতে হবে এবং তারপর ভিতরের key-value পেয়ার থেকে মান খুঁজে বের করতে হবে।

Example: Searching in Nested JSON Objects

import org.json.simple.JSONObject;

public class NestedJsonSearchExample {
    public static void main(String[] args) {
        // Create a nested JSON object
        JSONObject address = new JSONObject();
        address.put("street", "123 Main St");
        address.put("city", "New York");
        address.put("zip", "10001");

        JSONObject person = new JSONObject();
        person.put("name", "John Doe");
        person.put("age", 30);
        person.put("address", address);

        // Access the nested JSON object and search for a key
        JSONObject personAddress = (JSONObject) person.get("address");
        String city = (String) personAddress.get("city");

        System.out.println("City: " + city); // Should print "New York"
    }
}

Explanation:

  • এখানে একটি nested JSON object তৈরি করা হয়েছে, যেখানে address নামক অবজেক্টটি person অবজেক্টের মধ্যে রয়েছে।
  • পরে, address অবজেক্ট থেকে city এর মান অ্যাক্সেস করা হয়েছে।

Output:

City: New York

এখানে, nested object থেকে city অ্যাক্সেস করা হয়েছে এবং সেটি কনসোলে আউটপুট হয়েছে।


4. Searching with Complex Queries

যদিও JSON.simple এর মধ্যে SQL-style querying সিস্টেম নেই, তবে আপনি সাধারণ key ভিত্তিক অনুসন্ধান এবং nested object searching সহজেই করতে পারেন। আপনি যদি আরও জটিল querying করতে চান, তবে আপনি streaming APIs অথবা অন্যান্য JSON লাইব্রেরি ব্যবহার করতে পারেন যেমন Jackson বা Gson

তবে, JSON.simple এর মধ্যে কিছু সাধারণ কার্যকারিতা সহ querying করা সম্ভব।

Example: Searching for a Key in a JSON Object

import org.json.simple.JSONObject;

public class KeySearchExample {
    public static void main(String[] args) {
        // Create a JSON object
        JSONObject obj = new JSONObject();
        obj.put("name", "John Doe");
        obj.put("age", 30);
        obj.put("city", "New York");

        // Search for a key in the JSON object
        String keyToSearch = "city";
        if (obj.containsKey(keyToSearch)) {
            System.out.println("Key found: " + keyToSearch + ", Value: " + obj.get(keyToSearch));
        } else {
            System.out.println("Key not found.");
        }
    }
}

Explanation:

  • এখানে containsKey() মেথড ব্যবহার করা হয়েছে যা চেক করে যে নির্দিষ্ট key অবজেক্টে রয়েছে কিনা।
  • যদি key পাওয়া যায়, তাহলে তার মান কনসোলে প্রদর্শিত হবে।

Output:

Key found: city, Value: New York

এখানে, city নামক key অবজেক্টে রয়েছে এবং সেই মান (value) কনসোলে আউটপুট হয়েছে।


  • JSON.simple লাইব্রেরি ব্যবহার করে আপনি সহজেই key-value পেয়ার থেকে ডেটা access বা search করতে পারেন।
  • JSONArray এবং JSONObject এর মাধ্যমে আপনি complex queries বা nested objects থেকেও ডেটা খুঁজে বের করতে পারেন।
  • JSON.simple খুবই সিম্পল এবং হালকা লাইব্রেরি হওয়ায় ছোট এবং মাঝারি আকারের প্রোজেক্টের জন্য উপযুক্ত, তবে বড় ডেটাসেট এবং কাস্টম কুয়েরি করতে Jackson বা Gson আরও উপযুক্ত হতে পারে।
Content added By

JSON.simple লাইব্রেরি ব্যবহার করে JSON ডেটাতে অবজেক্ট এবং অ্যারের মধ্যে searching করা যায়। JSON ডেটা সাধারনত key-value পেয়ার (JSON Object) বা ordered list (JSON Array) এর আকারে থাকে। এই লাইব্রেরি দিয়ে আপনি JSON অবজেক্ট বা অ্যারে থেকে ডেটা খুঁজে বের করতে পারেন।

এখানে JSON Object এবং JSONArray (Array) এর মধ্যে searching করার জন্য কিছু সাধারণ উদাহরণ দেখানো হবে।


১. JSON Object এর মধ্যে Searching

JSON Object হল key-value পেয়ার সম্বলিত একটি ডেটা স্ট্রাকচার। JSON Object থেকে আপনি key এর মাধ্যমে সংশ্লিষ্ট value খুঁজে বের করতে পারেন।

JSON Object এর মধ্যে Searching Example

import org.json.simple.JSONObject;

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

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

        // Searching for a specific key-value pair
        if (jsonObject.containsKey("name")) {
            System.out.println("Name: " + jsonObject.get("name"));
        } else {
            System.out.println("Key 'name' not found.");
        }

        // Searching for a non-existing key
        if (jsonObject.containsKey("country")) {
            System.out.println("Country: " + jsonObject.get("country"));
        } else {
            System.out.println("Key 'country' not found.");
        }
    }
}

Output:

Name: John
Key 'country' not found.

এখানে:

  • containsKey() মেথড ব্যবহার করে চেক করা হচ্ছে যে "name" এবং "country" কীগুলি JSON Object-এ রয়েছে কি না।
  • যদি key পাওয়া যায়, তাহলে সংশ্লিষ্ট value প্রদর্শন করা হবে।

২. JSON Array এর মধ্যে Searching

JSON Array হল একটি অর্ডারড লিস্ট, যেখানে আপনি ইনডেক্সের মাধ্যমে ডেটা অ্যাক্সেস করতে পারেন। JSONArray থেকে আপনি একটি নির্দিষ্ট মান (value) খুঁজে বের করতে পারেন।

JSON Array এর মধ্যে Searching Example

import org.json.simple.JSONArray;

public class JsonArraySearchExample {
    public static void main(String[] args) {
        // Create a new JSONArray
        JSONArray jsonArray = new JSONArray();

        // Adding values to the JSONArray
        jsonArray.add("John");
        jsonArray.add("Alice");
        jsonArray.add("Bob");

        // Searching for a specific value in the JSONArray
        if (jsonArray.contains("Alice")) {
            System.out.println("Found Alice in the array.");
        } else {
            System.out.println("Alice not found in the array.");
        }

        // Searching for a non-existing value
        if (jsonArray.contains("David")) {
            System.out.println("Found David in the array.");
        } else {
            System.out.println("David not found in the array.");
        }
    }
}

Output:

Found Alice in the array.
David not found in the array.

এখানে:

  • contains() মেথড ব্যবহার করে চেক করা হচ্ছে যে "Alice" এবং "David" মানগুলি JSONArray-তে রয়েছে কি না।
  • যদি মানটি পাওয়া যায়, তাহলে তার উপস্থিতি জানানো হয়।

৩. JSON Object এর মধ্যে Nested Searching

যদি JSON Object এ nested objects থাকে, তাহলে সেই অবজেক্টগুলির মধ্যে অনুসন্ধান করতে হবে।

Nested JSON Object এর মধ্যে Searching Example

import org.json.simple.JSONObject;

public class NestedJsonObjectSearchExample {
    public static void main(String[] args) {
        // Create a new JSONObject for address
        JSONObject address = new JSONObject();
        address.put("street", "123 Main St");
        address.put("city", "New York");

        // Create a new JSONObject for person
        JSONObject person = new JSONObject();
        person.put("name", "John");
        person.put("age", 30);
        person.put("address", address);  // Nested address object

        // Searching in the nested JSON object
        if (person.containsKey("address")) {
            JSONObject addressDetails = (JSONObject) person.get("address");
            System.out.println("Street: " + addressDetails.get("street"));
            System.out.println("City: " + addressDetails.get("city"));
        } else {
            System.out.println("Address key not found.");
        }
    }
}

Output:

Street: 123 Main St
City: New York

এখানে:

  • containsKey() মেথড ব্যবহার করে nested address অবজেক্টটি JSON Object-এ রয়েছে কিনা তা চেক করা হয়েছে।
  • তারপর nested address অবজেক্টের মধ্যে থাকা street এবং city মানগুলি অ্যাক্সেস করা হয়েছে।

৪. JSON Array এর মধ্যে Object Searching

JSON Array তে যদি অবজেক্ট থাকে, তাহলে আপনি সেই অবজেক্টের মধ্যে specific key-value পেয়ার খুঁজে বের করতে পারেন।

JSONArray তে Object Searching Example

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

public class JsonArrayObjectSearchExample {
    public static void main(String[] args) {
        // Create a new JSONArray
        JSONArray jsonArray = new JSONArray();

        // Create a few JSONObject instances and add them to the JSONArray
        JSONObject person1 = new JSONObject();
        person1.put("name", "John");
        person1.put("age", 30);
        jsonArray.add(person1);

        JSONObject person2 = new JSONObject();
        person2.put("name", "Alice");
        person2.put("age", 25);
        jsonArray.add(person2);

        // Searching for an object with a specific key-value pair
        for (Object obj : jsonArray) {
            JSONObject person = (JSONObject) obj;
            if (person.containsKey("name") && person.get("name").equals("Alice")) {
                System.out.println("Found Alice: " + person);
            }
        }
    }
}

Output:

Found Alice: {"name":"Alice","age":25}

এখানে:

  • JSONArray তে দুটি JSONObject রাখা হয়েছে।
  • একটি লুপের মাধ্যমে JSON অ্যারে তে থাকা অবজেক্টের মধ্যে "name": "Alice" খোঁজা হচ্ছে।
  • যদি পাওয়া যায়, তবে সেই অবজেক্টটি প্রিন্ট করা হচ্ছে।

JSON.simple লাইব্রেরি ব্যবহার করে আপনি JSON Object এবং JSON Array এর মধ্যে সহজেই অনুসন্ধান (searching) করতে পারেন। এর মধ্যে containsKey() এবং contains() মেথড ব্যবহার করে সহজভাবে key-value পেয়ার এবং value খুঁজে বের করা যায়। JSON Object এবং Array তে nested structures থাকলে, আপনি সেগুলোর মধ্যেও অনুসন্ধান করতে পারেন।

JSON.simple একটি হালকা এবং দ্রুত লাইব্রেরি যা সাধারণ অনুসন্ধান কাজের জন্য খুবই উপকারী, তবে বেশি জটিল বা কাস্টম অনুসন্ধান কাজের জন্য আপনি Jackson বা Gson এর মতো আরও শক্তিশালী লাইব্রেরি ব্যবহার করতে পারেন।

Content added By

JSON.simple লাইব্রেরি ব্যবহার করে JSON Object এবং Array-এ key-based এবং value-based অনুসন্ধান (searching) করা যেতে পারে। এই অনুসন্ধান পদ্ধতিগুলি JSON ডেটা ম্যানিপুলেশন এবং ডেটা অ্যাক্সেসের জন্য অত্যন্ত গুরুত্বপূর্ণ। নিচে key-based এবং value-based অনুসন্ধান টেকনিকের মাধ্যমে JSON Object এবং JSON Array-এ কিভাবে ডেটা অনুসন্ধান করা যায়, তা বিস্তারিতভাবে আলোচনা করা হয়েছে।


১. Key-Based Searching in JSON Object

Key-based searching হল একটি পদ্ধতি যেখানে আপনি একটি নির্দিষ্ট key অনুসন্ধান করেন এবং সেই key এর মান (value) অ্যাক্সেস করেন।

JSON Object এ Key-Based Searching:

ধরা যাক, আমাদের একটি JSON Object রয়েছে এবং আমরা একটি নির্দিষ্ট key-এর জন্য মান খুঁজে বের করতে চাই।

import org.json.simple.JSONObject;

public class KeyBasedSearch {
    public static void main(String[] args) {
        // Create a JSON Object
        JSONObject jsonObject = new JSONObject();
        
        // Adding key-value pairs to the JSONObject
        jsonObject.put("name", "John");
        jsonObject.put("age", 30);
        jsonObject.put("city", "New York");

        // Searching for a specific key (e.g., "age")
        if (jsonObject.containsKey("age")) {
            System.out.println("Value for 'age': " + jsonObject.get("age"));
        } else {
            System.out.println("Key not found");
        }
    }
}

Output:

Value for 'age': 30

ব্যাখ্যা:

  • এখানে, jsonObject.containsKey("age") মেথড ব্যবহার করে আমরা "age" নামক key-এর উপস্থিতি পরীক্ষা করছি।
  • যদি "age" key পাওয়া যায়, তবে jsonObject.get("age") ব্যবহার করে তার মান (value) প্রিন্ট করা হবে।

২. Value-Based Searching in JSON Object

Value-based searching হল একটি পদ্ধতি যেখানে আপনি একটি নির্দিষ্ট value অনুসন্ধান করেন এবং যেসব key তে সেই value উপস্থিত, সেগুলি বের করতে চান।

JSON Object এ Value-Based Searching:

import org.json.simple.JSONObject;

public class ValueBasedSearch {
    public static void main(String[] args) {
        // Create a JSON Object
        JSONObject jsonObject = new JSONObject();
        
        // Adding key-value pairs to the JSONObject
        jsonObject.put("name", "John");
        jsonObject.put("age", 30);
        jsonObject.put("city", "New York");

        // Searching for a specific value (e.g., "John")
        boolean valueFound = false;
        for (Object key : jsonObject.keySet()) {
            if (jsonObject.get(key).equals("John")) {
                System.out.println("Found 'John' at key: " + key);
                valueFound = true;
                break;
            }
        }
        
        if (!valueFound) {
            System.out.println("Value not found");
        }
    }
}

Output:

Found 'John' at key: name

ব্যাখ্যা:

  • এখানে, jsonObject.keySet() মেথড ব্যবহার করে JSON অবজেক্টের সব key পাওয়া যাচ্ছে এবং তাদের মানের সাথে তুলনা করা হচ্ছে।
  • যদি কোনো value পাওয়া যায়, তবে তার সাথে সংশ্লিষ্ট key প্রিন্ট করা হয়।

৩. Key-Based Searching in JSON Array

JSON Array তে key নেই, তবে ইনডেক্স অনুযায়ী ডেটা থাকে। JSONArray তে index-based searching করা হয়।

JSON Array এ Key-Based Searching:

ধরা যাক, আমাদের একটি JSON Array রয়েছে এবং আমরা একটি নির্দিষ্ট ইনডেক্স অনুযায়ী মান খুঁজে বের করতে চাই।

import org.json.simple.JSONArray;

public class ArrayKeyBasedSearch {
    public static void main(String[] args) {
        // Create a JSON Array
        JSONArray jsonArray = new JSONArray();
        
        // Adding values to the JSONArray
        jsonArray.add("John");
        jsonArray.add(30);
        jsonArray.add("New York");

        // Searching for a value at a specific index (e.g., index 1)
        if (jsonArray.size() > 1) {
            System.out.println("Value at index 1: " + jsonArray.get(1));
        } else {
            System.out.println("Index not found");
        }
    }
}

Output:

Value at index 1: 30

ব্যাখ্যা:

  • এখানে, jsonArray.get(1) ব্যবহার করে আমরা JSON অ্যারের index 1-এ থাকা মান (value) অ্যাক্সেস করেছি।

৪. Value-Based Searching in JSON Array

Value-based searching JSON Array-এ একটি নির্দিষ্ট মান খোঁজা এবং যদি সেটি পাওয়া যায়, তবে সেই মানের ইনডেক্স বা অবস্থান বের করা।

JSON Array এ Value-Based Searching:

import org.json.simple.JSONArray;

public class ArrayValueBasedSearch {
    public static void main(String[] args) {
        // Create a JSON Array
        JSONArray jsonArray = new JSONArray();
        
        // Adding values to the JSONArray
        jsonArray.add("John");
        jsonArray.add(30);
        jsonArray.add("New York");

        // Searching for a specific value (e.g., "New York")
        int index = -1;
        for (int i = 0; i < jsonArray.size(); i++) {
            if (jsonArray.get(i).equals("New York")) {
                index = i;
                break;
            }
        }

        if (index != -1) {
            System.out.println("Found 'New York' at index: " + index);
        } else {
            System.out.println("Value not found");
        }
    }
}

Output:

Found 'New York' at index: 2

ব্যাখ্যা:

  • এখানে, jsonArray.get(i) ব্যবহার করে অ্যারের প্রতিটি উপাদানের মান পরীক্ষা করা হচ্ছে এবং যদি নির্দিষ্ট মান পাওয়া যায়, তবে তার ইনডেক্স প্রিন্ট করা হয়।

৫. JSON Object এবং JSON Array এর মধ্যে Searching Combined Example

এখানে আমরা একটি উদাহরণ দেখাবো যেখানে JSON Object এবং JSONArray একত্রে ব্যবহার করা হচ্ছে, এবং সেখানে key-based এবং value-based অনুসন্ধান করা হচ্ছে।

Combined Example:

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

public class CombinedSearchExample {
    public static void main(String[] args) {
        // Create a JSON Object
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "John");
        jsonObject.put("age", 30);
        
        // Create a JSON Array
        JSONArray jsonArray = new JSONArray();
        jsonArray.add("New York");
        jsonArray.add("Los Angeles");

        // Add JSON Array to JSON Object
        jsonObject.put("cities", jsonArray);

        // Key-Based Search in JSON Object
        if (jsonObject.containsKey("name")) {
            System.out.println("Name found: " + jsonObject.get("name"));
        }

        // Value-Based Search in JSON Array
        boolean cityFound = false;
        for (int i = 0; i < jsonArray.size(); i++) {
            if (jsonArray.get(i).equals("New York")) {
                System.out.println("Found 'New York' at index: " + i);
                cityFound = true;
                break;
            }
        }

        if (!cityFound) {
            System.out.println("City not found in the array");
        }
    }
}

Output:

Name found: John
Found 'New York' at index: 0

ব্যাখ্যা:

  • JSON Object এর মধ্যে "name" key খোঁজা হয়েছে এবং যদি পাওয়া যায়, তার মান print করা হয়েছে।
  • JSONArray তে "New York" city খোঁজা হয়েছে এবং তার ইনডেক্স প্রিন্ট করা হয়েছে।

  • Key-Based Searching: JSON Object বা Array-এ নির্দিষ্ট key বা index অনুসন্ধান করার জন্য সরাসরি containsKey বা get মেথড ব্যবহার করা হয়।
  • Value-Based Searching: JSON Object বা Array-এ নির্দিষ্ট value খুঁজে বের করতে loop ব্যবহার করা হয়, যেখানে সমস্ত key-value পেয়ার বা অ্যারে উপাদান পরীক্ষা করা হয়।

JSON.simple লাইব্রেরি ব্যবহার করে আপনি সহজেই key-based এবং value-based অনুসন্ধান করতে পারেন, যা JSON ডেটা ম্যানিপুলেশন এবং অ্যাক্সেস করার জন্য খুবই গুরুত্বপূর্ণ।

Content added By

JSON.simple লাইব্রেরি সাধারণত JSON object এবং JSON array তৈরি এবং পার্স (parse) করার জন্য ব্যবহৃত হয়। তবে, JSON.simple তে complex querying বা advanced filtering এর জন্য সরাসরি সমর্থন নেই, যেমন SQL-like querying বা json-path queries এর মতো কিছু ফিচার, যা অন্যান্য লাইব্রেরি যেমন Jackson বা Gson সরবরাহ করে।

তবে, JSON.simple এর সাহায্যে কিছু সাধারণ querying এবং filtering টেকনিক ব্যবহার করা যেতে পারে। এই টেকনিকগুলির মাধ্যমে আপনি JSON ডেটার মধ্যে থেকে নির্দিষ্ট ডেটা খুঁজে পেতে পারেন এবং ফিল্টার করতে পারেন।

এখানে, আমরা দেখব কিভাবে JSON.simple ব্যবহার করে complex querying এবং filtering করা যায়।


1. JSON Filtering Using Java Streams

যেহেতু JSON.simple সরাসরি complex querying বা filtering সমর্থন করে না, আপনি Java 8-এর Streams API ব্যবহার করে JSON অবজেক্টের মধ্যে filtering এবং querying করতে পারেন।

Example: Filtering JSON Data using Streams

ধরা যাক, আমাদের কাছে একটি JSONArray রয়েছে, যেখানে একাধিক JSONObject রয়েছে এবং আমরা সেগুলিকে নির্দিষ্ট শর্তে ফিল্টার করতে চাই।

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

import java.util.stream.Collectors;

public class JsonSimpleFilteringExample {
    public static void main(String[] args) {
        // JSONArray তৈরি করা
        JSONArray jsonArray = new JSONArray();

        // JSON Object তৈরি করে JSONArray তে যোগ করা
        JSONObject person1 = new JSONObject();
        person1.put("name", "John");
        person1.put("age", 30);
        jsonArray.add(person1);

        JSONObject person2 = new JSONObject();
        person2.put("name", "Jane");
        person2.put("age", 25);
        jsonArray.add(person2);

        JSONObject person3 = new JSONObject();
        person3.put("name", "Alice");
        person3.put("age", 35);
        jsonArray.add(person3);

        // Java Stream API ব্যবহার করে 30 এর বেশি বয়সের লোকদের ফিল্টার করা
        JSONArray filteredArray = (JSONArray) jsonArray.stream()
                .filter(person -> ((JSONObject) person).get("age") != null && (long) ((JSONObject) person).get("age") > 30)
                .collect(Collectors.toList());

        // ফিল্টার করা JSON Array প্রিন্ট করা
        System.out.println(filteredArray.toJSONString());
    }
}

Output:

[{"name":"Alice","age":35}]

এখানে, আমরা Java 8 Streams API ব্যবহার করে age এর ভিত্তিতে filtering করেছি, যেখানে 30 এর বেশি বয়সের লোকদের JSON array থেকে বের করা হয়েছে।


2. Complex Querying with Nested JSON Objects

যদি আপনার JSON ডেটাতে nested objects থাকে, আপনি Java code ব্যবহার করে সেগুলিতে filtering বা querying করতে পারেন। উদাহরণস্বরূপ, যখন একটি address অবজেক্ট person অবজেক্টের মধ্যে nested থাকে।

Example: Querying Nested JSON Objects

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

public class NestedJsonQueryingExample {
    public static void main(String[] args) {
        // JSONArray তৈরি করা
        JSONArray jsonArray = new JSONArray();

        // JSON Object তৈরি করে JSONArray তে যোগ করা
        JSONObject person1 = new JSONObject();
        person1.put("name", "John");
        person1.put("age", 30);

        JSONObject address1 = new JSONObject();
        address1.put("street", "123 Main St");
        address1.put("city", "New York");
        person1.put("address", address1);

        jsonArray.add(person1);

        JSONObject person2 = new JSONObject();
        person2.put("name", "Jane");
        person2.put("age", 25);

        JSONObject address2 = new JSONObject();
        address2.put("street", "456 Oak St");
        address2.put("city", "Los Angeles");
        person2.put("address", address2);

        jsonArray.add(person2);

        // Nested Object Query: City is "New York"
        JSONArray result = new JSONArray();
        for (Object obj : jsonArray) {
            JSONObject person = (JSONObject) obj;
            JSONObject address = (JSONObject) person.get("address");

            // City value filtering
            if (address != null && "New York".equals(address.get("city"))) {
                result.add(person);
            }
        }

        // ফিল্টার করা JSON Array প্রিন্ট করা
        System.out.println(result.toJSONString());
    }
}

Output:

[{"name":"John","age":30,"address":{"street":"123 Main St","city":"New York"}}]

এখানে, আমরা nested address object এর ভিতরে থাকা city কী-এর মানের মাধ্যমে filtering করেছি এবং New York শহরের মানুষদের তালিকা করেছি।


3. Sorting JSON Data

JSONArray-এর মধ্যে sorting করার জন্য Java 8 এর Comparator ব্যবহার করে আপনি JSON অবজেক্টগুলো age বা অন্য কোনো ফিল্ডের ভিত্তিতে সাজাতে পারেন।

Example: Sorting JSON Array by Age

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

import java.util.Comparator;

public class JsonSimpleSortingExample {
    public static void main(String[] args) {
        // JSONArray তৈরি করা
        JSONArray jsonArray = new JSONArray();

        // JSON Object তৈরি করে JSONArray তে যোগ করা
        JSONObject person1 = new JSONObject();
        person1.put("name", "John");
        person1.put("age", 30);
        jsonArray.add(person1);

        JSONObject person2 = new JSONObject();
        person2.put("name", "Jane");
        person2.put("age", 25);
        jsonArray.add(person2);

        JSONObject person3 = new JSONObject();
        person3.put("name", "Alice");
        person3.put("age", 35);
        jsonArray.add(person3);

        // JSON Array sorting by age in ascending order
        jsonArray.sort(Comparator.comparingInt(o -> (int) ((JSONObject) o).get("age")));

        // সাজানো JSON Array প্রিন্ট করা
        System.out.println(jsonArray.toJSONString());
    }
}

Output:

[{"name":"Jane","age":25},{"name":"John","age":30},{"name":"Alice","age":35}]

এখানে, আমরা JSONArray এর মধ্যে থাকা JSON অবজেক্টগুলো age ফিল্ডের ভিত্তিতে ascending order-এ সাজিয়েছি।


4. Using Recursion for Deep Querying

যখন JSON ডেটা আরও জটিল এবং গহীর মধ্যে nested থাকে, তখন আপনি recursion ব্যবহার করে গভীর JSON অবজেক্টে কুয়েরি বা ফিল্টার করতে পারেন।

Example: Recursive Querying for Deep Nested JSON

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

public class RecursiveQueryExample {
    public static void main(String[] args) {
        // Nested JSON structure তৈরি করা
        JSONObject root = new JSONObject();
        root.put("name", "Root");

        JSONObject child1 = new JSONObject();
        child1.put("name", "Child 1");
        JSONObject grandChild1 = new JSONObject();
        grandChild1.put("name", "Grandchild 1");
        child1.put("child", grandChild1);

        JSONObject child2 = new JSONObject();
        child2.put("name", "Child 2");

        root.put("children", new JSONArray());
        ((JSONArray) root.get("children")).add(child1);
        ((JSONArray) root.get("children")).add(child2);

        // Recursive Query to find "Grandchild 1"
        String targetName = "Grandchild 1";
        findRecursive(root, targetName);
    }

    // Recursive Method to Search
    public static void findRecursive(JSONObject obj, String targetName) {
        if (obj.get("name") != null && obj.get("name").equals(targetName)) {
            System.out.println("Found: " + obj);
            return;
        }

        if (obj.get("children") != null) {
            JSONArray children = (JSONArray) obj.get("children");
            for (Object child : children) {
                findRecursive((JSONObject) child, targetName);
            }
        }
    }
}

Output:

Found: {"name":"Grandchild 1","child":{}}

এখানে, আমরা recursive পদ্ধতি ব্যবহার করে deep nested JSON অবজেক্টে Grandchild 1 কে খুঁজে বের করেছি।


  1. JSON.simple লাইব্রেরি সরাসরি complex querying বা advanced filtering সমর্থন না করলেও, Java 8 Streams API, Collections API, এবং recursion ব্যবহার করে আপনি JSON ডেটায় querying এবং filtering করতে পারেন।
  2. JSONArray এবং JSONObject এর মধ্যে nested data থাকলে, আপনি recursion ব্যবহার করে deep nested querying করতে পারেন।
  3. Java Streams API ব্যবহার করে সহজভাবে filtering এবং sorting করা সম্ভব, যা JSON ডেটার কার্যকরী ব্যবহারের জন্য সহায়ক।

এটি JSON.simple এর মধ্যে filtering এবং querying করার মৌলিক কৌশল এবং আপনি Java-এর শক্তিশালী API ব্যবহার করে আরও জটিল ডেটার সাথে কাজ করতে পারবেন।

Content added By

Json.Simple লাইব্রেরি ব্যবহার করে আপনি JSON ডেটা পার্স এবং ম্যানিপুলেট করতে পারেন, তবে এটি কোনও বিল্ট-ইন JSON querying বা searching ফিচার সরবরাহ করে না। তবে, আপনি JSON অবজেক্ট বা অ্যারে থেকে নির্দিষ্ট মান বের করার জন্য কিছু সাধারণ পদ্ধতি ব্যবহার করতে পারেন। এখানে আমরা JSON ডেটাতে querying এবং searching করার জন্য কিছু টেকনিক এবং উদাহরণ দেখব।

JSON Querying: JSON ডেটার মধ্যে নির্দিষ্ট কী বা মান অনুসন্ধান করা।

JSON Searching: JSON অবজেক্ট বা অ্যারে থেকে নির্দিষ্ট মান বা কীগুলোর মধ্যে অনুসন্ধান করা।


1. JSON Querying in Json.Simple

JSON ডেটা থেকে কী বা মান খুঁজে বের করার জন্য JSONObject এর get() মেথড এবং JSONArray এর get() মেথড ব্যবহার করা হয়। এটি নির্দিষ্ট কী বা মান অনুসন্ধান করতে সাহায্য করে।

Example: JSON Querying with JSONObject

ধরা যাক, আপনি একটি Person JSON অবজেক্ট থেকে age কী-এর মান বের করতে চান।

import org.json.simple.JSONObject;

public class JsonQueryExample {
    public static void main(String[] args) {
        // JSONObject তৈরি করা
        JSONObject person = new JSONObject();
        person.put("name", "John");
        person.put("age", 30);
        person.put("isStudent", false);

        // JSON Object থেকে মান বের করা
        String name = (String) person.get("name");
        int age = ((Long) person.get("age")).intValue();  // Age is stored as Long, so we need to convert it
        boolean isStudent = (Boolean) person.get("isStudent");

        // মান প্রিন্ট করা
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        System.out.println("Is Student: " + isStudent);
    }
}

Output:

Name: John
Age: 30
Is Student: false

এখানে, person.get("age") ব্যবহার করে age কী-এর মান বের করা হয়েছে। এর মানটি Long হিসেবে ফেরত আসে, তাই intValue() ব্যবহার করা হয়েছে।


2. Searching in JSON Arrays

যখন JSON ডেটা অ্যারে আকারে থাকে, আপনি JSONArray ব্যবহার করে অ্যারের মধ্যে বিভিন্ন অবজেক্ট বা মান অনুসন্ধান করতে পারেন। এখানে একটি JSONArray তে বিভিন্ন JSONObject থাকতে পারে এবং আপনি একটি নির্দিষ্ট কী বা মান অনুসন্ধান করতে পারেন।

Example: Searching in a JSON Array

ধরা যাক, আপনি একটি JSONArray থেকে "age" 30 এর সাথে মিলে এমন Person অবজেক্ট খুঁজে বের করতে চান।

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

public class JsonSearchArrayExample {
    public static void main(String[] args) {
        // JSONArray তৈরি করা
        JSONArray peopleArray = new JSONArray();

        // Person 1 JSONObject তৈরি করা
        JSONObject person1 = new JSONObject();
        person1.put("name", "John");
        person1.put("age", 30);
        peopleArray.add(person1);

        // Person 2 JSONObject তৈরি করা
        JSONObject person2 = new JSONObject();
        person2.put("name", "Jane");
        person2.put("age", 25);
        peopleArray.add(person2);

        // Searching for the person with age 30
        for (Object obj : peopleArray) {
            JSONObject person = (JSONObject) obj;
            Long age = (Long) person.get("age");
            if (age == 30) {
                System.out.println("Found person with age 30: " + person.get("name"));
            }
        }
    }
}

Output:

Found person with age 30: John

এখানে, JSONArray তে দুটি person অবজেক্ট রাখা হয়েছে। আমরা age কী এর মাধ্যমে প্রতিটি person অবজেক্টের মধ্যে খুঁজে বের করেছি এবং যদি age 30 হয়, তবে সেই ব্যক্তির নাম প্রিন্ট করেছি।


3. Nested JSON Querying and Searching

এখন ধরুন, আপনার কাছে একটি nested JSON অবজেক্ট রয়েছে, যেখানে এক অবজেক্টের মধ্যে আরেক অবজেক্ট রয়েছে। আপনি কীভাবে nested অবজেক্ট থেকে মান বের করবেন বা খুঁজে বের করবেন?

Example: Nested JSON Querying

import org.json.simple.JSONObject;

public class NestedJsonQueryExample {
    public static void main(String[] args) {
        // Inner JSON Object তৈরি করা
        JSONObject address = new JSONObject();
        address.put("street", "123 Main St");
        address.put("city", "New York");

        // Outer JSON Object তৈরি করা
        JSONObject person = new JSONObject();
        person.put("name", "John");
        person.put("age", 30);
        person.put("address", address);  // Nested Object

        // Nested JSON Object থেকে মান বের করা
        JSONObject personAddress = (JSONObject) person.get("address");
        String street = (String) personAddress.get("street");
        String city = (String) personAddress.get("city");

        // প্রিন্ট করা
        System.out.println("Street: " + street);
        System.out.println("City: " + city);
    }
}

Output:

Street: 123 Main St
City: New York

এখানে, person অবজেক্টের মধ্যে address একটি nested JSON অবজেক্ট রয়েছে। আমরা person.get("address") ব্যবহার করে address অবজেক্টটি বের করেছি এবং তার মধ্যে street এবং city এর মান বের করেছি।


4. Filtering JSON Objects

এছাড়া, যদি আপনি JSON অবজেক্ট বা অ্যারের মধ্যে কিছু নির্দিষ্ট মান অনুসন্ধান করতে চান, তবে এটি Java Streams ব্যবহার করে ফিল্টার করতে পারেন।

Example: Filtering JSON Objects Using Streams

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import java.util.stream.Collectors;

public class JsonFilteringExample {
    public static void main(String[] args) {
        // JSONArray তৈরি করা
        JSONArray peopleArray = new JSONArray();

        // Person 1 JSONObject তৈরি করা
        JSONObject person1 = new JSONObject();
        person1.put("name", "John");
        person1.put("age", 30);
        peopleArray.add(person1);

        // Person 2 JSONObject তৈরি করা
        JSONObject person2 = new JSONObject();
        person2.put("name", "Jane");
        person2.put("age", 25);
        peopleArray.add(person2);

        // Filtering people with age > 25
        JSONArray filteredPeople = (JSONArray) peopleArray.stream()
                .filter(person -> (Long) ((JSONObject) person).get("age") > 25)
                .collect(Collectors.toList());

        // Print filtered people
        for (Object person : filteredPeople) {
            JSONObject jsonObject = (JSONObject) person;
            System.out.println(jsonObject.get("name") + " is older than 25");
        }
    }
}

Output:

John is older than 25

এখানে, Java Streams ব্যবহার করে আমরা age > 25 এমন সমস্ত person অবজেক্ট ফিল্টার করেছি এবং তাদের নাম প্রিন্ট করেছি।


  1. JSON.simple লাইব্রেরি সরাসরি JSON ডেটার উপর querying বা searching ফিচার সরবরাহ না করলেও, আপনি get() মেথডের মাধ্যমে সহজেই JSON অবজেক্ট এবং অ্যারে থেকে মান অনুসন্ধান করতে পারেন।
  2. JSONArray তে একাধিক JSONObject থাকতে পারে এবং আপনি সহজেই লুপ বা Java Streams ব্যবহার করে ফিল্টারিং করতে পারেন।
  3. Nested JSON থেকে মান বের করার জন্য আপনি nested get() মেথড ব্যবহার করতে পারেন, যা আপনাকে JSON অবজেক্টের মধ্যে থাকা ডেটার স্তরের মধ্যে খোঁজার সুযোগ দেয়।
  4. JSON ডেটা থেকে ফলস্বরূপ ডেটা বের করতে Java Streams একটি শক্তিশালী টুল হতে পারে।

এই পদ্ধতিগুলি JSON ডেটার querying এবং searching প্রক্রিয়াকে সহজ এবং কার্যকরী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...