Gson লাইব্রেরি দিয়ে JSON স্কিমা ব্যবহার করে ডেটার ভ্যালিডেশন করা সম্ভব, তবে Gson নিজে JSON স্কিমা ভ্যালিডেশন সরাসরি সাপোর্ট করে না। তবে, আপনি JSON Schema Validation করার জন্য অন্যান্য লাইব্রেরি যেমন Everit JSON Schema ব্যবহার করতে পারেন, যা JSON স্কিমা ফাইলের সাথে আপনার JSON ডেটার ভ্যালিডেশন করতে সহায়ক। এরপর, Gson ব্যবহার করে JSON ডেটা প্যার্স করতে পারেন এবং সেই ডেটার ভ্যালিডেশন করতে পারেন।
এখানে আমরা Everit JSON Schema লাইব্রেরি ব্যবহার করে কিভাবে JSON স্কিমার মাধ্যমে JSON ভ্যালিডেশন করতে পারি, এবং এরপর Gson ব্যবহার করে সেই JSON ডেটা ডেসিরিয়ালাইজ করতে পারি, তা দেখাব।
1. Everit JSON Schema Dependency:
প্রথমে, আপনাকে Everit JSON Schema লাইব্রেরিটি প্রোজেক্টে যুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তাহলে আপনার pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.everit.json</groupId>
<artifactId>everit-json-schema</artifactId>
<version>1.14.1</version>
</dependency>
যদি আপনি Gradle ব্যবহার করেন, তাহলে build.gradle ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
implementation 'org.everit.json:everit-json-schema:1.14.1'
2. JSON Schema তৈরি করা:
ধরা যাক, আপনি একটি Person অবজেক্টের JSON স্কিমা তৈরি করতে চান, যেখানে name (string), age (integer), এবং email (string) ফিল্ড থাকবে।
এটি একটি JSON স্কিমা (schema.json) হতে পারে:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer"
},
"email": {
"type": "string"
}
},
"required": ["name", "age", "email"]
}
3. JSON Schema Validation এবং Gson Integration:
এখন, আপনি Everit JSON Schema লাইব্রেরি ব্যবহার করে JSON স্কিমা ফাইলের মাধ্যমে JSON ডেটার ভ্যালিডেশন করবেন এবং তারপর Gson ব্যবহার করে JSON ডেটা ডেসিরিয়ালাইজ করবেন।
Step 1: JSON স্কিমা লোড করা এবং JSON ভ্যালিডেশন করা
import com.google.gson.Gson;
import com.everit.json.schema.*;
import com.everit.json.schema.loader.SchemaLoader;
import org.json.JSONObject;
import org.json.JSONTokener;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
// JSON স্কিমা লোড করা
FileReader schemaReader = new FileReader("schema.json");
JSONObject jsonSchema = new JSONObject(new JSONTokener(schemaReader));
Schema schema = SchemaLoader.load(jsonSchema);
// JSON ডেটা লোড করা
String jsonData = "{\"name\":\"John\", \"age\":30, \"email\":\"john.doe@example.com\"}";
// JSON ভ্যালিডেশন
JSONObject jsonSubject = new JSONObject(jsonData);
try {
schema.validate(jsonSubject); // JSON ভ্যালিডেশন
System.out.println("JSON is valid");
} catch (ValidationException e) {
System.out.println("JSON is invalid: " + e.getMessage());
return;
}
// Gson দিয়ে JSON ডেটা ডেসিরিয়ালাইজ করা
Gson gson = new Gson();
Person person = gson.fromJson(jsonData, Person.class);
System.out.println(person);
}
}
Step 2: Person ক্লাস তৈরি করা
class Person {
String name;
int age;
String email;
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + ", email='" + email + "'}";
}
}
ব্যাখ্যা:
- Everit JSON Schema লাইব্রেরি ব্যবহার করে আমরা প্রথমে JSON স্কিমা লোড করেছি।
- স্কিমা লোড করার পর,
schema.validate(jsonSubject)ব্যবহার করে JSON ডেটার ভ্যালিডেশন করা হয়েছে। - যদি JSON ডেটা স্কিমার সাথে মিলে যায়, তাহলে এটি valid বলে গণ্য হবে এবং Gson দিয়ে JSON ডেটা ডেসিরিয়ালাইজ করা হবে।
- যদি JSON ডেটার কোনো ত্রুটি থাকে, তবে এটি invalid বলে রিপোর্ট করা হবে।
- Gson ব্যবহার করে JSON ডেটাকে
Personঅবজেক্টে ডেসিরিয়ালাইজ করা হয়েছে।
4. Output:
যদি JSON ডেটা স্কিমার সাথে সঠিকভাবে মিলে যায়, তাহলে আউটপুট হবে:
JSON is valid
Person{name='John', age=30, email='john.doe@example.com'}
যদি JSON ডেটা স্কিমার সাথে সঠিকভাবে না মিলে, তাহলে আউটপুট হবে:
JSON is invalid: Missing required properties: name, age, email
5. JSON Schema Validation Features:
- Required Fields: স্কিমা অনুযায়ী যদি কোনো প্রপার্টি মিসিং থাকে, তাহলে
ValidationExceptionছুড়ে দেওয়া হবে। - Type Validation: JSON ফিল্ডের টাইপ স্কিমায় কনফিগার করা থাকলে, তা ঠিকভাবে চেক করা হবে (যেমন,
string,integerইত্যাদি)। - Additional Validation: JSON স্কিমা অনুযায়ী আরও কাস্টম ভ্যালিডেশন যোগ করা সম্ভব, যেমন
minLength,maxLength,pattern(রেগুলার এক্সপ্রেশন), এবং আরও অনেক কিছু।
সংক্ষেপে:
- Gson সরাসরি JSON Schema Validation সাপোর্ট করে না, তবে আপনি Everit JSON Schema বা অন্য কোনো JSON Schema লাইব্রেরি ব্যবহার করে JSON ভ্যালিডেশন করতে পারেন।
- JSON স্কিমা দিয়ে ডেটার ভ্যালিডেশন করার পর Gson দিয়ে সেই ডেটাকে Java অবজেক্টে ডেসিরিয়ালাইজ করা যায়।
- Everit JSON Schema লাইব্রেরি JSON ডেটা এবং স্কিমার মধ্যে মিল যাচাই করে, এবং যদি কোনো ভ্যালিডেশন ত্রুটি থাকে, তা বিস্তারিতভাবে প্রদান করে।
এভাবে আপনি Gson-এর সাথে JSON স্কিমা ব্যবহার করে ডেটার ভ্যালিডেশন কার্যকরভাবে করতে পারেন।
Read more