Skill

JSON Schema এবং Validation

Java Technologies - জেসন (JSON)
121
121

JSON স্কিমা (JSON Schema) একটি ডেটা ডেসক্রিপশন ল্যাঙ্গুয়েজ যা JSON ডেটা ফরম্যাটের কাঠামো, কনটেন্ট এবং কনস্ট্রেইন্ট (নিয়মাবলী) বর্ণনা করে। এটি JSON ডেটার একটি কাঠামো নির্ধারণ করে এবং ডেটার ধরন, ফিল্ড নাম, মানের সীমা ইত্যাদি সুনির্দিষ্ট করে। JSON স্কিমা সাধারণত JSON ডেটা ভ্যালিডেশন, ডকুমেন্টেশন এবং API বা ডেটাবেসে ডেটার স্ট্রাকচার নিশ্চিত করতে ব্যবহৃত হয়।

JSON স্কিমা কী?


JSON স্কিমা একটি নির্দিষ্ট কাঠামোর JSON ডেটা ফাইল যা নির্দেশ করে ডেটার কাঠামো, ধরন, প্রয়োজনীয় ফিল্ড, ফিল্ডের মানের সীমা, এবং অন্যান্য বৈশিষ্ট্য। JSON স্কিমা আপনাকে JSON ডেটার অভ্যন্তরীণ কাঠামো এবং কনটেন্ট কিভাবে হওয়া উচিত তা সুনির্দিষ্ট করে দেয়।

JSON স্কিমার সাধারণ কাঠামো


JSON স্কিমা সাধারণত JSON অবজেক্ট হিসেবে থাকে, যেখানে কিছু মূল কিওয়ার্ড থাকে, যেমন:

  • type: ডেটার ধরন (যেমন, string, number, array, ইত্যাদি)
  • properties: অবজেক্টের প্রপার্টি/ফিল্ডের বিস্তারিত বর্ণনা
  • required: কোনো প্রপার্টি প্রয়োজনীয় কি না, তা নির্ধারণ করে
  • items: অ্যারে (array)-এর এলিমেন্টসের ধরন

একটি সাধারণ JSON স্কিমার উদাহরণ:

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
        "name": {
            "type": "string"
        },
        "age": {
            "type": "integer",
            "minimum": 18
        },
        "email": {
            "type": "string",
            "format": "email"
        }
    },
    "required": ["name", "age"]
}

এখানে:

  • type: "object": JSON ডেটার মূল কাঠামো একটি অবজেক্ট (object)।
  • properties: অবজেক্টের মধ্যে থাকা প্রপার্টি/ফিল্ডগুলির বর্ণনা।
  • required: name এবং age ফিল্ড দুটি প্রয়োজনীয় (অন্যথায় এটা ভ্যালিড হবে না)।

JSON স্কিমা ভ্যালিডেশন কী?


JSON ভ্যালিডেশন হল একটি প্রক্রিয়া যেখানে JSON ডেটার কাঠামো এবং কনটেন্ট চেক করা হয়, যেন তা একটি নির্দিষ্ট স্কিমার সাথে সঙ্গতিপূর্ণ থাকে। অর্থাৎ, JSON ডেটা ওই স্কিমার নিয়ম ও কনস্ট্রেইন্ট অনুসরণ করছে কিনা তা যাচাই করা হয়। এটি বিভিন্ন জায়গায় ব্যবহৃত হয়:

  • API ডেভেলপমেন্টে: API থেকে আসা JSON রেসপন্সের কাঠামো নিশ্চিত করতে
  • ডেটাবেস ইন্টিগ্রেশন: ডেটাবেসে JSON ডেটা ইনসার্ট করার সময়
  • ডাটা ইন্টিগ্রিটি: ডেটার সঠিকতা নিশ্চিত করার জন্য

JSON স্কিমা ভ্যালিডেশন করার জন্য টুলস


আপনি JSON স্কিমা ভ্যালিডেশন করার জন্য বিভিন্ন লাইব্রেরি এবং টুলস ব্যবহার করতে পারেন। কিছু জনপ্রিয় JSON স্কিমা ভ্যালিডেশন লাইব্রেরি:

  1. Ajv (Another JSON Validator) - JavaScript লাইব্রেরি
  2. jsonschema - Python লাইব্রেরি
  3. Jackson - Java লাইব্রেরি

Java তে JSON স্কিমা ভ্যালিডেশন


Java তে JSON স্কিমা ভ্যালিডেশন করার জন্য Everit JSON Schema এবং Jackson লাইব্রেরি বেশ জনপ্রিয়। এখানে আমরা Everit JSON Schema লাইব্রেরি ব্যবহার করে JSON স্কিমা ভ্যালিডেশন করার একটি উদাহরণ দেখব।

Everit JSON Schema লাইব্রেরি ব্যবহার করে JSON স্কিমা ভ্যালিডেশন

  1. Maven ডিপেনডেন্সি যোগ করা:
<dependency>
    <groupId>org.everit.json</groupId>
    <artifactId>everit-json-schema</artifactId>
    <version>1.13.0</version>
</dependency>
  1. Java কোড উদাহরণ:
import org.everit.json.schema.Schema;
import org.everit.json.schema.loader.SchemaLoader;
import org.json.JSONObject;
import org.json.JSONTokener;

public class JSONValidator {
    public static void main(String[] args) {
        // JSON স্কিমা (schema) এবং JSON ডেটা
        String schemaString = "{\n" +
                "  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n" +
                "  \"type\": \"object\",\n" +
                "  \"properties\": {\n" +
                "    \"name\": { \"type\": \"string\" },\n" +
                "    \"age\": { \"type\": \"integer\", \"minimum\": 18 }\n" +
                "  },\n" +
                "  \"required\": [\"name\", \"age\"]\n" +
                "}";

        String jsonString = "{ \"name\": \"John\", \"age\": 30 }";

        // JSON স্কিমা লোড করা
        JSONObject jsonSchema = new JSONObject(new JSONTokener(schemaString));
        Schema schema = SchemaLoader.load(jsonSchema);

        // JSON ডেটা লোড করা
        JSONObject jsonData = new JSONObject(jsonString);

        // ভ্যালিডেশন করা
        try {
            schema.validate(jsonData); // JSON ডেটা স্কিমার সাথে মিলছে কিনা পরীক্ষা করা
            System.out.println("JSON is valid.");
        } catch (Exception e) {
            System.out.println("JSON is invalid: " + e.getMessage());
        }
    }
}

এখানে:

  • JSON স্কিমা এবং JSON ডেটা দুটো আলাদা স্ট্রিং হিসেবে রাখা হয়েছে।
  • SchemaLoader এর মাধ্যমে স্কিমা লোড করা হয় এবং তারপর সেই স্কিমার ভিত্তিতে JSON ডেটার ভ্যালিডেশন করা হয়।

JSON স্কিমা ভ্যালিডেশন টুলস


JSON স্কিমা ভ্যালিডেশন টুলস বা অনলাইন প্ল্যাটফর্মগুলি JSON স্কিমা ফাইল পরীক্ষা করতে সহায়তা করে। কিছু জনপ্রিয় টুলস:

  1. JSONLint: এটি একটি অনলাইন JSON স্কিমা এবং JSON ডেটা ভ্যালিডেটর।
  2. Swagger Editor: API ডকুমেন্টেশন এবং JSON স্কিমা ভ্যালিডেশন করতে সহায়তা করে।

সারাংশ:

JSON স্কিমা একটি গুরুত্বপূর্ণ টুল যা JSON ডেটার কাঠামো নির্ধারণ করে এবং ভ্যালিডেশন প্রক্রিয়ার মাধ্যমে ডেটার সঠিকতা যাচাই করতে সাহায্য করে। Java তে JSON স্কিমা ভ্যালিডেশন করতে আপনি লাইব্রেরি ব্যবহার করতে পারেন, যেমন Everit JSON Schema বা Jackson। JSON স্কিমা এবং ভ্যালিডেশন টুলস ডেভেলপারদের জন্য JSON ডেটার সঠিকতা এবং ডেটা ইন্টিগ্রিটি নিশ্চিত করতে অত্যন্ত কার্যকরী।

Content added By

JSON Schema কি এবং কেন প্রয়োজন?

92
92

JSON Schema হল একটি নির্দিষ্ট স্ট্রাকচারে JSON ডেটা ভ্যালিডেট এবং বর্ণনা করার জন্য একটি নির্ধারিত কাঠামো। এটি মূলত JSON ডেটার গঠন, প্রকার, সীমাবদ্ধতা এবং বৈশিষ্ট্যগুলির জন্য নিয়মাবলী (rules) সংজ্ঞায়িত করে, যার মাধ্যমে JSON ডেটা যাচাই করা যায়। JSON Schema JSON ডেটার জন্য একটি পদ্ধতি তৈরি করে, যার মাধ্যমে নিশ্চিত করা যায় যে ডেটা কাঠামো ঠিকঠাক এবং নির্দিষ্ট শর্ত পূরণ করছে।

JSON Schema এর গঠন


JSON Schema সাধারণত একটি JSON অবজেক্ট হিসেবে থাকে, যেখানে বিভিন্ন প্রপার্টি, ডেটা প্রকার (data types), এবং অন্যান্য বৈশিষ্ট্যগুলির বর্ণনা থাকে। JSON Schema ডেটা স্ট্রাকচারের নির্দিষ্ট রুল এবং শর্তগুলো নির্ধারণ করে, যেমন:

  • প্রপার্টি (properties)
  • ডেটা প্রকার (data types)
  • মিনিমাম এবং ম্যাক্সিমাম মান (minimum and maximum values)
  • বাধ্যতামূলক প্রপার্টি (required properties)
  • এবং অন্যান্য শর্তাবলী।

JSON Schema এর একটি উদাহরণ

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "age": {
      "type": "integer",
      "minimum": 18
    },
    "email": {
      "type": "string",
      "format": "email"
    }
  },
  "required": ["name", "email"]
}

এখানে:

  • $schema: এটি JSON Schema এর সংস্করণ নির্দেশ করে।
  • type: এটি JSON ডেটার মূল ধরনের কথা বলে, যেমন এখানে এটি একটি object
  • properties: এটি অবজেক্টের ভিতরে থাকা প্রপার্টি এবং তাদের প্রকার নির্ধারণ করে।
  • required: এটি একটি অ্যারে হিসেবে বাধ্যতামূলক প্রপার্টিগুলির তালিকা তৈরি করে।

JSON Schema এর সুবিধাসমূহ


  1. ডেটা ভ্যালিডেশন: JSON Schema এর মাধ্যমে JSON ডেটার গঠন যাচাই করা যায়, যা নিশ্চিত করে যে ডেটা নির্দিষ্ট স্ট্রাকচার অনুসরণ করছে। এটি ডেটার প্রকার এবং সীমাবদ্ধতা চেক করার জন্য ব্যবহৃত হয়।
  2. ডকুমেন্টেশন: JSON Schema স্বয়ংক্রিয়ভাবে JSON ডেটার ডকুমেন্টেশন তৈরি করতে সহায়তা করে। এটি ডেটার গঠন, প্রপার্টি এবং তাদের বৈশিষ্ট্যগুলি সম্পর্কে পরিষ্কার ধারণা প্রদান করে।
  3. ডেটা ইন্টিগ্রিটি: JSON Schema ডেটার ভ্যালিডিটি নিশ্চিত করে, যা অ্যাপ্লিকেশনগুলোর মধ্যে ডেটার সঠিকতা এবং এক্সপেকটেশন মেনে চলা নিশ্চিত করে।
  4. অ্যাপ্লিকেশন উন্নয়ন এবং ডিবাগিং: ডেভেলপারদের জন্য JSON Schema সহ JSON ডেটার সমস্যা চিহ্নিত করা সহজ হয়। এটি ডেটার মধ্যে ত্রুটি দ্রুত শনাক্ত করতে সাহায্য করে।
  5. রিপিটেবল এবং ইন্টারঅপারেবল: JSON Schema অন্যান্য সিস্টেম বা অ্যাপ্লিকেশনের সাথে JSON ডেটা বিনিময় করার ক্ষেত্রে ব্যাপকভাবে সহায়ক। এটি গঠনগত নির্ভুলতা নিশ্চিত করে যখন বিভিন্ন সিস্টেম JSON ডেটা ব্যবহার করে।

JSON Schema কেন প্রয়োজন?


  1. ডেটা ইনটেগ্রিটি নিশ্চিতকরণ: JSON Schema ডেটার গঠন এবং বৈশিষ্ট্য যাচাই করে, যাতে নিশ্চিত হওয়া যায় যে ডেটা সঠিকভাবে স্টোর এবং প্রসেস হচ্ছে। এটি ডেটার ভ্যালিডেশন প্রক্রিয়াকে অটোমেটিক করে দেয়, যা ডেভেলপমেন্টের সময় ত্রুটি হ্রাস করে।
  2. ইন্টারফেস এবং API ডকুমেন্টেশন: JSON Schema ব্যবহার করে API এবং ডেটা ইন্টারফেসের জন্য ডকুমেন্টেশন তৈরি করা যায়। এটি ডেভেলপারদের জন্য সহজে বুঝতে সহায়ক এবং API এর সাথে কাজ করার প্রক্রিয়াকে দ্রুত করে।
  3. ডেটা স্ট্যান্ডার্ডাইজেশন: JSON Schema ডেটার স্ট্যান্ডার্ড নির্ধারণ করে, যাতে JSON ডেটার গঠন নির্দিষ্ট এবং অভ্যন্তরীণভাবে সঠিক হয়। এটি নিশ্চিত করে যে ডেটা ফর্ম্যাট এবং স্ট্রাকচার একরকম থাকে।
  4. ডেটা এক্সচেঞ্জ সহজতর করা: JSON Schema সিস্টেমগুলির মধ্যে ডেটার আদান-প্রদান সহজতর করে, কারণ এটি নিশ্চিত করে যে ডেটার কাঠামো বা গঠন একই রকম থাকবে। এতে বিভিন্ন সিস্টেমের মধ্যে JSON ডেটা ম্যানিপুলেশন এবং ব্যবহার সহজ হয়।
  5. বিগ ডেটা এবং মাইক্রোসার্ভিস আর্কিটেকচার: মাইক্রোসার্ভিস এবং বিগ ডেটা প্রজেক্টে JSON Schema ব্যবহার করে ডেটার কাঠামো সহজে ডিফাইন করা এবং সংরক্ষণ করা যায়। এতে ডেটা ইন্টিগ্রিটি এবং ভ্যালিডেশন অনেক সহজ হয়।

JSON Schema একটি গুরুত্বপূর্ণ টুল যা JSON ডেটার স্ট্রাকচার নির্ধারণ, ডেটা ভ্যালিডেশন এবং ডকুমেন্টেশনকে সহজ করে তোলে। এটি ডেভেলপারদের জন্য ডেটা ম্যানিপুলেশন প্রক্রিয়া দ্রুত, নির্ভরযোগ্য এবং ত্রুটিহীন করতে সহায়তা করে। JSON Schema ব্যবহার করে ডেটার গঠন এবং বৈশিষ্ট্য পরীক্ষা করা যায়, যা সিস্টেমগুলির মধ্যে ডেটার এক্সচেঞ্জকে সহজ এবং নিরাপদ করে তোলে।

Content added By

JSON এর জন্য Schema Design করা

83
83

JSON Schema একটি স্ট্যান্ডার্ড ফরম্যাট যা JSON ডেটার স্ট্রাকচার, বৈশিষ্ট্য এবং ডেটা টাইপ নির্ধারণ করে। এটি JSON ডেটার বৈধতা যাচাই করতে এবং ডেটা কনট্রোল করার জন্য ব্যবহৃত হয়। JSON Schema ডেভেলপারদের JSON ডেটার গঠন এবং এর বৈশিষ্ট্য নির্ধারণ করতে সহায়তা করে, যাতে ডেটা ট্রান্সফারের সময় ত্রুটি কম হয় এবং ডেটার গুণমান বজায় থাকে।

JSON Schema কী?


JSON Schema হল একটি নির্দিষ্ট কাঠামো যা JSON ডেটার ভিতরে থাকা কিপল-পেয়ার বা অ্যারের আকার, ডেটা টাইপ, এবং তাদের অন্যান্য বৈশিষ্ট্য সম্পর্কিত নিয়ম নির্ধারণ করে। JSON Schema ব্যবহার করে আপনি JSON ডেটা যাচাই করতে পারেন এবং এটি সঠিকভাবে স্ট্রাকচারড কিনা তা নিশ্চিত করতে পারেন।

JSON Schema সাধারণত একটি JSON ডকুমেন্টের মাধ্যমে প্রকাশ করা হয়, যা ডেটার প্রোপার্টি, ডেটা টাইপ এবং বাধ্যতামূলক ক্ষেত্রগুলি নির্ধারণ করে।

JSON Schema এর উপাদান


1. $schema:
এটি JSON Schema ডকুমেন্টের স্কিমার সংস্করণ উল্লেখ করে।

2. type:
এটি JSON ডেটার প্রকার (যেমন, object, array, string, integer ইত্যাদি) নির্দেশ করে।

3. properties:
এটি একটি অবজেক্টের ক্ষেত্রগুলির জন্য প্রোপার্টি নির্ধারণ করে।

4. required:
এটি নিশ্চিত করে যে কোন প্রোপার্টি বাধ্যতামূলক (required) হতে হবে।

5. items:
এটি অ্যারের জন্য উপাদানগুলির টাইপ বা স্কিমা নির্ধারণ করে।

6. enum:
এটি একটি সেটের মধ্যে অনুমোদিত মানগুলির তালিকা দেয়।

7. additionalProperties:
এটি নির্ধারণ করে যে একটি অবজেক্টে অতিরিক্ত অপ্রত্যাশিত প্রোপার্টি থাকতে পারবে কিনা।

JSON Schema উদাহরণ


এখানে একটি JSON Schema উদাহরণ দেওয়া হল যেখানে একটি ব্যবহারকারী (user) অবজেক্টের স্কিমা ডিজাইন করা হয়েছে।

JSON ডেটা:

{
  "name": "John Doe",
  "age": 30,
  "email": "johndoe@example.com",
  "isStudent": false
}

JSON Schema:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "age": {
      "type": "integer",
      "minimum": 18
    },
    "email": {
      "type": "string",
      "format": "email"
    },
    "isStudent": {
      "type": "boolean"
    }
  },
  "required": ["name", "age", "email"],
  "additionalProperties": false
}

JSON Schema এর ব্যাখ্যা


  1. $schema:
    এটি JSON Schema এর সংস্করণ উল্লেখ করে, এখানে http://json-schema.org/draft-07/schema# ব্যবহার করা হয়েছে।
  2. type:
    type এর মান object, যা নির্দেশ করে যে এটি একটি অবজেক্ট টাইপ JSON ডেটা।
  3. properties:
    এটি অবজেক্টের মধ্যে থাকা প্রোপার্টিগুলির ধরন নির্ধারণ করে:
    • name: একটি স্ট্রিং।
    • age: একটি পূর্ণসংখ্যা এবং এর মান অবশ্যই ১৮ বা তার বেশি হতে হবে (minimum নির্দেশক)।
    • email: একটি স্ট্রিং যা ইমেইল ফরম্যাটে হতে হবে (format নির্দেশক)।
    • isStudent: একটি বুলিয়ান মান (true বা false)।
  4. required:
    এই প্রোপার্টিগুলির মান অবশ্যই উপস্থিত থাকতে হবে: name, age, এবং email
  5. additionalProperties:
    false সেট করা হয়েছে, এর মানে হলো অবজেক্টে শুধুমাত্র নির্দিষ্ট প্রোপার্টিগুলিই থাকতে পারবে, অন্য কোনো অতিরিক্ত প্রোপার্টি থাকবে না।

JSON Schema ব্যবহারের সুবিধা


  1. ডেটার বৈধতা যাচাই:
    JSON Schema ব্যবহার করে JSON ডেটার বৈধতা পরীক্ষা করা যায়, যার ফলে ডেটা এক্সচেঞ্জের সময় ত্রুটি কম হয়।
  2. স্ট্রাকচার নির্ধারণ:
    এটি JSON ডেটার কাঠামো এবং প্রোপার্টি নির্ধারণ করতে সাহায্য করে, যার ফলে ডেটার গঠন সঠিক এবং পরিস্কার থাকে।
  3. ডেভেলপারদের সহায়তা:
    JSON Schema ডেভেলপারদের জন্য ডেটার কাঠামো বুঝতে এবং ডেটা ব্যবহার করার সময় ভুল কমাতে সহায়তা করে।
  4. API ডকুমেন্টেশন:
    JSON Schema API ডকুমেন্টেশন তৈরি করতে সহায়ক, যেখানে API রিকোয়েস্ট এবং রেসপন্সের গঠন এবং বৈশিষ্ট্য নির্ধারণ করা যায়।

JSON Schema ব্যবহার করার সময় কিছু গুরুত্বপূর্ণ বিষয়


  1. নির্দিষ্ট স্কিমা নির্বাচন:
    JSON Schema এর বিভিন্ন সংস্করণ রয়েছে। আপনি যেই সংস্করণ ব্যবহার করবেন, সেটি $schema ফিল্ডে উল্লেখ করতে ভুলবেন না।
  2. বাধ্যতামূলক ক্ষেত্র:
    required ফিল্ডের মাধ্যমে আপনি কি কি প্রোপার্টি বাধ্যতামূলক তা নির্ধারণ করতে পারবেন।
  3. ডেটা টাইপ নির্ধারণ:
    JSON Schema ব্যবহার করে আপনি ডেটা টাইপ নির্ধারণ করতে পারবেন, যেমন string, integer, boolean, array ইত্যাদি।
  4. সীমা নির্ধারণ:
    আপনি কিছু ফিল্ডের জন্য সীমা (যেমন, minimum, maximum) নির্ধারণ করতে পারেন, যেমন একটি বয়সের মান অবশ্যই ১৮ বা তার বেশি হতে হবে।

সারাংশ


JSON Schema ডেটার কাঠামো এবং বৈশিষ্ট্য নির্ধারণ করার জন্য একটি শক্তিশালী টুল। এটি JSON ডেটার বৈধতা যাচাই করার জন্য ব্যবহৃত হয় এবং ডেভেলপারদের JSON ডেটা ঠিকমতো ব্যবহার করার জন্য সহায়তা করে। JSON Schema ব্যবহারের মাধ্যমে ডেটার গঠন এবং প্রোপার্টি নিশ্চিত করা যায়, যার ফলে ডেটার নিরাপত্তা এবং সঠিকতা বৃদ্ধি পায়।

Content added By

JSON Schema Validation এর জন্য লাইব্রেরি ব্যবহার

82
82

JSON Schema একটি ডেটা ফরম্যাট যা JSON ডেটার স্ট্রাকচার, ডেটা টাইপ এবং কন্টেন্টের বৈধতা পরীক্ষা করতে ব্যবহৃত হয়। এটি একটি স্ট্যান্ডার্ড যা JSON ডেটার গঠন এবং বৈধতা যাচাই করতে সাহায্য করে। JSON Schema Validation ব্যবহারের মাধ্যমে আপনি নিশ্চিত করতে পারেন যে JSON ডেটা সঠিকভাবে স্ট্রাকচার্ড এবং নির্দিষ্ট শর্ত পূরণ করছে কিনা।

Java তে JSON Schema Validation করার জন্য বিভিন্ন লাইব্রেরি ব্যবহার করা যেতে পারে। এই লাইব্রেরিগুলি JSON ডেটার স্কিমা অনুযায়ী বৈধতা যাচাই করতে সহায়তা করে এবং আপনি সহজেই আপনার অ্যাপ্লিকেশনে JSON ডেটা ভ্যালিডেশন ইন্টিগ্রেট করতে পারবেন।

Java তে JSON Schema Validation এর জন্য জনপ্রিয় লাইব্রেরি


  1. Jackson

    Jackson হল Java-এর একটি জনপ্রিয় লাইব্রেরি যা JSON পার্সিং এবং সিরিয়ালাইজেশনের জন্য ব্যবহৃত হয়। Jackson JSON Schema Validation এর জন্য একটি আনুষঙ্গিক লাইব্রেরি সরবরাহ করে, যার মাধ্যমে আপনি JSON ডেটা ভ্যালিডেশন করতে পারেন।

    Jackson ব্যবহার করার জন্য স্টেপস:

    • Jackson এর মধ্যে jackson-databind এবং jackson-module-jsonSchema লাইব্রেরি ব্যবহার করা হয়।

    উদাহরণ:

    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
    import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;
    
    public class JsonSchemaValidation {
        public static void main(String[] args) throws Exception {
            String jsonData = "{\"name\": \"John\", \"age\": 30}";
            String jsonSchema = "{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"integer\"}}}";
    
            ObjectMapper objectMapper = new ObjectMapper();
            JsonNode jsonNode = objectMapper.readTree(jsonData);
            JsonNode schemaNode = objectMapper.readTree(jsonSchema);
    
            // Validate the JSON against the schema
            SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
            objectMapper.acceptJsonFormatVisitor(jsonNode.getClass(), visitor);
            JsonSchema jsonSchema = visitor.finalSchema();
            
            // Perform validation here
            boolean valid = jsonSchema.validate(jsonNode).isEmpty();
            System.out.println("Is the JSON valid? " + valid);
        }
    }
    

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

  2. Everit JSON Schema

    Everit JSON Schema হল একটি ছোট এবং দ্রুত JSON Schema validation লাইব্রেরি যা Java-তে JSON স্কিমা ভ্যালিডেশন সমর্থন করে। এটি একটি সহজ এবং হালকা লাইব্রেরি যা JSON Schema validation এফিশিয়েন্সি এবং কার্যকারিতা প্রদান করে।

    Everit JSON Schema ব্যবহার করার জন্য স্টেপস:

    • Maven এর মাধ্যমে লাইব্রেরি যুক্ত করতে হবে।

    উদাহরণ:

    <dependency>
        <groupId>org.everit.json</groupId>
        <artifactId>everit-json-schema</artifactId>
        <version>1.14.0</version>
    </dependency>
    

    Java কোড উদাহরণ:

    import org.everit.json.schema.Schema;
    import org.everit.json.schema.loader.SchemaLoader;
    import org.json.JSONObject;
    import org.json.JSONTokener;
    
    public class JsonSchemaValidationExample {
        public static void main(String[] args) {
            String jsonData = "{\"name\": \"John\", \"age\": 30}";
            String jsonSchema = "{\n" +
                                "  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n" +
                                "  \"type\": \"object\",\n" +
                                "  \"properties\": {\n" +
                                "    \"name\": {\"type\": \"string\"},\n" +
                                "    \"age\": {\"type\": \"integer\"}\n" +
                                "  },\n" +
                                "  \"required\": [\"name\", \"age\"]\n" +
                                "}";
    
            JSONObject jsonSubject = new JSONObject(jsonData);
            JSONObject jsonSchemaObject = new JSONObject(jsonSchema);
    
            // Load the schema
            Schema schema = SchemaLoader.load(jsonSchemaObject);
    
            // Validate the JSON data against the schema
            schema.validate(jsonSubject);  // This will throw a ValidationException if invalid
    
            System.out.println("JSON is valid according to the schema!");
        }
    }
    

    এখানে, JSON ডেটা এবং JSON স্কিমার মধ্যে সঠিকতা যাচাই করা হয়েছে এবং JSON যদি সঠিক না হয়, তবে একটি ValidationException থ্রো হবে।

  3. JSONassert

    JSONassert লাইব্রেরি JSON এর মধ্যে ভার্চুয়াল কন্টেন্ট তুলনা করার জন্য ব্যবহৃত হয়, এবং এটি JSON ডেটার স্কিমা ভ্যালিডেশন করতে সক্ষম। এটি সাধারণত টেস্টিং ফ্রেমওয়ার্কে ব্যবহৃত হয়।

    JSONassert ব্যবহার করার জন্য স্টেপস:

    • JSONassert Maven dependency ইনস্টল করুন।
    <dependency>
        <groupId>org.skyscreamer</groupId>
        <artifactId>jsonassert</artifactId>
        <version>1.5.0</version>
        <scope>test</scope>
    </dependency>
    

    Java কোড উদাহরণ:

    import org.junit.Test;
    import static org.junit.Assert.*;
    import org.skyscreamer.jsonassert.JSONAssert;
    
    public class JsonValidationTest {
        @Test
        public void testJsonSchema() throws Exception {
            String expectedJson = "{\"name\":\"John\",\"age\":30}";
            String actualJson = "{\"name\":\"John\",\"age\":30}";
            
            // Validate that JSON is correct
            JSONAssert.assertEquals(expectedJson, actualJson, false);
        }
    }
    

    এখানে JSONAssert.assertEquals() ব্যবহার করে দুইটি JSON অবজেক্টের মধ্যে সঠিকতা যাচাই করা হয়েছে।

সারাংশ


Java তে JSON Schema Validation করার জন্য বেশ কিছু লাইব্রেরি পাওয়া যায়, যেমন Jackson, Everit JSON Schema, এবং JSONassert। এই লাইব্রেরিগুলি ব্যবহার করে আপনি সহজেই JSON ডেটা স্কিমার সাথে তুলনা করে তার বৈধতা যাচাই করতে পারেন। Everit JSON Schema লাইব্রেরি সবচেয়ে সরল এবং দ্রুত কাজ করে, যেখানে Jackson এবং JSONassert অন্য উন্নত বৈশিষ্ট্য প্রদান করে যেমন JSON ডেটার গভীর তুলনা এবং ফরম্যাটিং।

Content added By

Practical উদাহরণ: API Input Validation

90
90

API ইনপুট ভ্যালিডেশন হল একটি অত্যন্ত গুরুত্বপূর্ণ প্রক্রিয়া যা অ্যাপ্লিকেশন থেকে ইনপুট ডেটা সঠিকভাবে প্রাপ্ত হচ্ছে কিনা তা নিশ্চিত করে। যদি ইনপুট ডেটা ঠিক না হয়, তবে তা অ্যাপ্লিকেশনের সঠিক কার্যকারিতা ব্যাহত করতে পারে। JSON ফরম্যাটে ইনপুট ডেটা পাঠানো হলে, Java-তে এই ইনপুট ডেটার ভ্যালিডেশন করা যায় সহজেই।

এখানে আমরা দেখব কিভাবে একটি RESTful API তৈরি করা যায় যেখানে JSON ইনপুট ডেটা গ্রহণ করা হয় এবং সেই ডেটার ভ্যালিডেশন করা হয়।

স্টেপ বাই স্টেপ উদাহরণ:


১. Maven Dependency

আপনি যদি Maven ব্যবহার করেন, তাহলে প্রথমে প্রয়োজনীয় লাইব্রেরি যোগ করতে হবে। এখানে আমরা Jackson লাইব্রেরি ব্যবহার করব JSON ডেটা পার্সিংয়ের জন্য এবং Hibernate Validator ব্যবহার করব ইনপুট ভ্যালিডেশনের জন্য।

<dependencies>
    <!-- Jackson JSON Processor -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.5</version>
    </dependency>

    <!-- Hibernate Validator -->
    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.1.0.Final</version>
    </dependency>

    <!-- Bean Validation API -->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
</dependencies>

২. Java ক্লাস তৈরি করা (DTO - Data Transfer Object)

API ইনপুট ভ্যালিডেশনের জন্য প্রথমে একটি ক্লাস তৈরি করতে হবে যেটি JSON ইনপুট ডেটা ধারণ করবে। এখানে আমরা User নামের একটি ক্লাস তৈরি করব যেটি ব্যবহারকারীর নাম, বয়স এবং ইমেইল ধারণ করবে এবং আমাদের প্রয়োজনীয় ভ্যালিডেশন যুক্ত করব।

import javax.validation.constraints.Email;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

public class User {

    @NotNull(message = "Name cannot be null")
    private String name;

    @Min(value = 18, message = "Age must be greater than or equal to 18")
    private int age;

    @Email(message = "Invalid email format")
    private String email;

    // গেটার এবং সেটার মেথড
    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 getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

এখানে আমরা @NotNull, @Min, এবং @Email অ্যনোটেশন ব্যবহার করেছি, যা ইনপুট ডেটার ভ্যালিডেশন করতে সহায়তা করবে।

৩. API Controller তৈরি করা

এখন একটি REST API কন্ট্রোলার তৈরি করতে হবে যেখানে ব্যবহারকারী JSON ডেটা POST রিকোয়েস্টের মাধ্যমে পাঠাবে এবং ইনপুট ভ্যালিডেশন করা হবে।

import com.fasterxml.jackson.databind.ObjectMapper;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.Set;

@Path("/user")
public class UserController {

    // Validator ইনস্ট্যান্স
    private static Validator validator;

    static {
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        validator = factory.getValidator();
    }

    @POST
    @Path("/create")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response createUser(String jsonInput) {
        try {
            // JSON থেকে User অবজেক্টে রূপান্তর
            ObjectMapper objectMapper = new ObjectMapper();
            User user = objectMapper.readValue(jsonInput, User.class);

            // ইনপুট ভ্যালিডেশন
            Set<javax.validation.ConstraintViolation<User>> violations = validator.validate(user);

            if (!violations.isEmpty()) {
                StringBuilder errorMessage = new StringBuilder();
                for (javax.validation.ConstraintViolation<User> violation : violations) {
                    errorMessage.append(violation.getMessage()).append("\n");
                }
                return Response.status(Response.Status.BAD_REQUEST)
                        .entity("{\"error\":\"" + errorMessage.toString() + "\"}")
                        .build();
            }

            // যদি কোনো ত্রুটি না থাকে, সাফল্য মেসেজ পাঠানো
            return Response.status(Response.Status.OK).entity("{\"message\":\"User created successfully\"}").build();
        } catch (Exception e) {
            return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
                    .entity("{\"error\":\"Error processing request\"}")
                    .build();
        }
    }
}

এখানে, POST /create এ API পদ্ধতি, JSON ইনপুট গ্রহণ করে, Jackson ObjectMapper ব্যবহার করে User অবজেক্টে রূপান্তরিত করছে। তারপর Hibernate Validator ব্যবহার করে ইনপুট ডেটা ভ্যালিডেট করা হচ্ছে।

৪. পোস্টম্যান (Postman) দিয়ে API টেস্ট করা

এখন আমরা Postman বা অন্য কোন API টেস্টিং টুল ব্যবহার করে এই API টেস্ট করতে পারি। নিচে কিছু ইনপুট উদাহরণ দেয়া হলো:

সঠিক ইনপুট:

{
    "name": "John",
    "age": 25,
    "email": "john.doe@example.com"
}

এখানে ইনপুট সঠিক হলে, সাফল্য মেসেজ ফিরিয়ে আসবে:

{
    "message": "User created successfully"
}

ভুল ইনপুট:

  1. যদি age 18 এর নিচে থাকে:
{
    "name": "John",
    "age": 15,
    "email": "john.doe@example.com"
}

এই ক্ষেত্রে, ত্রুটি মেসেজ আসবে:

{
    "error": "Age must be greater than or equal to 18"
}
  1. যদি email সঠিক ফরম্যাটে না থাকে:
{
    "name": "John",
    "age": 25,
    "email": "john.doe"
}

এক্ষেত্রে ত্রুটি মেসেজ আসবে:

{
    "error": "Invalid email format"
}

সারাংশ


এই উদাহরণে দেখানো হয়েছে কিভাবে Java দিয়ে JSON ইনপুট ভ্যালিডেশন করা যায়। Hibernate Validator ব্যবহার করে JSON ইনপুটের বিভিন্ন ফিল্ডের ভ্যালিডেশন চেক করা হয়েছে, যেমন বয়স ১৮ এর বেশি হওয়া, নামের ফিল্ডের নাল না হওয়া এবং ইমেইল ফরম্যাট সঠিক হওয়া। এর ফলে, REST API এর ইনপুট ভ্যালিডেশন আরও সহজ এবং কার্যকর হয়, যা অ্যাপ্লিকেশনের সঠিক কার্যকারিতা নিশ্চিত করে।

Content added By
Promotion