Schema Generation এবং Data Validation

JSON Schema Validation - জ্যাকসন (Jackson) - Java Technologies

377

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


1. Schema Generation

Jackson-এর jackson-module-jsonSchema ব্যবহার করে JSON Schema তৈরি করা যায়। এই Schema ডেটার কাঠামো এবং বিধিনিষেধ বর্ণনা করতে ব্যবহৃত হয়।

ডিপেন্ডেন্সি:

<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-jsonSchema</artifactId>
    <version>2.15.2</version>
</dependency>

মডেল ক্লাস:

import com.fasterxml.jackson.annotation.JsonProperty;

public class User {
    @JsonProperty("id")
    public int id;

    @JsonProperty("name")
    public String name;

    @JsonProperty("email")
    public String email;

    @JsonProperty("age")
    public int age;
}

Schema Generation Example:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;

public class Main {
    public static void main(String[] args) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();

        // Schema Factory Wrapper
        SchemaFactoryWrapper schemaFactoryWrapper = new SchemaFactoryWrapper();
        objectMapper.acceptJsonFormatVisitor(User.class, schemaFactoryWrapper);
        JsonSchema schema = schemaFactoryWrapper.finalSchema();

        // Print JSON Schema
        String schemaJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);
        System.out.println("Generated Schema:");
        System.out.println(schemaJson);
    }
}

আউটপুট:

{
  "type": "object",
  "id": "urn:jsonschema:User",
  "properties": {
    "id": {
      "type": "integer"
    },
    "name": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "age": {
      "type": "integer"
    }
  }
}

2. Data Validation

Jackson-এ JSON Schema Validation সাধারণত JSON ডেটা Schema অনুযায়ী যাচাই করতে ব্যবহৃত হয়।

Validation Library ডিপেন্ডেন্সি:

<dependency>
    <groupId>com.networknt</groupId>
    <artifactId>json-schema-validator</artifactId>
    <version>1.0.78</version>
</dependency>

Validation Example:

Schema Definition:
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer"
    },
    "name": {
      "type": "string"
    },
    "email": {
      "type": "string",
      "format": "email"
    },
    "age": {
      "type": "integer",
      "minimum": 18
    }
  },
  "required": ["id", "name", "email", "age"]
}
Java কোড:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.networknt.schema.JsonSchema;
import com.networknt.schema.JsonSchemaFactory;
import com.networknt.schema.ValidationMessage;

import java.util.Set;

public class Main {
    public static void main(String[] args) throws Exception {
        // JSON Schema
        String schemaJson = """
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer"
            },
            "name": {
              "type": "string"
            },
            "email": {
              "type": "string",
              "format": "email"
            },
            "age": {
              "type": "integer",
              "minimum": 18
            }
          },
          "required": ["id", "name", "email", "age"]
        }
        """;

        // Input JSON
        String inputJson = """
        {
          "id": 101,
          "name": "John Doe",
          "email": "john.doe@example",
          "age": 16
        }
        """;

        ObjectMapper objectMapper = new ObjectMapper();

        // Load Schema
        JsonSchemaFactory factory = JsonSchemaFactory.getInstance();
        JsonSchema schema = factory.getSchema(schemaJson);

        // Validate JSON
        Set<ValidationMessage> errors = schema.validate(objectMapper.readTree(inputJson));

        // Print Validation Errors
        if (!errors.isEmpty()) {
            System.out.println("Validation Errors:");
            errors.forEach(error -> System.out.println(error.getMessage()));
        } else {
            System.out.println("JSON is valid!");
        }
    }
}

আউটপুট:

Validation Errors:
$.email: string "john.doe@example" is not a valid email
$.age: integer value 16 is less than minimum 18

3. Combining Schema Generation and Validation

একটি সিস্টেমে একই মডেল ব্যবহার করে Schema Generation এবং JSON Validation একত্রে করতে পারেন।

ধাপসমূহ:

  1. Schema Generate করুন
  2. JSON ডেটা ভ্যালিডেট করুন Schema অনুযায়ী।

Key Features:

  1. Schema Generation:
    • JSON Schema ডেভেলপমেন্ট সহজ এবং দ্রুত।
    • ডেটা ফরম্যাট বা কাঠামো ডকুমেন্ট করার জন্য আদর্শ।
  2. Data Validation:
    • JSON ডেটার সঠিকতা এবং সম্পূর্ণতা যাচাই।
    • ভ্যালিডেশন ভুল হলে সুনির্দিষ্ট ত্রুটি বার্তা প্রদান।
  3. Spring Boot Integration:
    • Spring Boot অ্যাপ্লিকেশনে Schema Generation এবং Validation সহজেই সংযুক্ত করা যায়।

ব্যবহারিক ক্ষেত্র:

  1. API Development:
    • API রিকোয়েস্ট বা রেসপন্স যাচাই।
    • ডেটা কনফিগারেশন ডায়নামিকভাবে যাচাই।
  2. Data Migration:
    • বিভিন্ন সিস্টেমে ডেটার সামঞ্জস্য নিশ্চিত।
  3. Integration with Frontend:
    • Frontend এবং Backend-এর মধ্যে ডেটা ফরম্যাটের সামঞ্জস্য বজায় রাখা।

উপকারিতা:

  • উন্নত ভ্যালিডেশন মেকানিজম।
  • JSON Schema ব্যবহার করে ডেটার কাঠামো বর্ণনা।
  • ডেটা ইন্টিগ্রেশন এবং API ডেভেলপমেন্টে সময় সাশ্রয়।

এই পদ্ধতিগুলো ব্যবহার করে আপনি সহজেই Jackson-এর সাহায্যে JSON Schema Generation এবং Data Validation পরিচালনা করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...