Complex Querying এবং Filtering Techniques

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

293

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
Promotion

Are you sure to start over?

Loading...