Back to list
dkyazzentwatwa

json-schema-validator

by dkyazzentwatwa

My comprehensive, tested + audited, library of skills to use for ChatGPT.

6🍴 0📅 Jan 20, 2026

SKILL.md


name: json-schema-validator description: Validate JSON data against JSON Schema specifications. Use for API validation, config file validation, or data quality checks.

JSON Schema Validator

Validate JSON documents against JSON Schema (Draft 7) specifications.

Features

  • Schema Validation: Validate JSON against schema
  • Error Details: Detailed validation error messages
  • Batch Validation: Validate multiple files
  • Schema Generation: Generate schema from examples
  • Multiple Drafts: Support for Draft 4, 6, 7

Quick Start

from json_validator import JSONValidator

validator = JSONValidator()

# Validate data against schema
schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "age": {"type": "integer", "minimum": 0}
    },
    "required": ["name"]
}

data = {"name": "John", "age": 30}
result = validator.validate(data, schema)
print(f"Valid: {result['valid']}")

CLI Usage

# Validate JSON file against schema
python json_validator.py --data user.json --schema user_schema.json

# Validate with inline schema
python json_validator.py --data config.json --schema '{"type": "object"}'

# Generate schema from sample
python json_validator.py --generate sample.json --output schema.json

# Batch validate directory
python json_validator.py --data-dir ./configs/ --schema config_schema.json

API Reference

JSONValidator Class

class JSONValidator:
    def __init__(self, draft: str = "draft7")

    # Validation
    def validate(self, data: dict, schema: dict) -> dict
    def validate_file(self, data_path: str, schema_path: str) -> dict
    def validate_batch(self, data_files: list, schema: dict) -> list

    # Schema operations
    def generate_schema(self, data: dict) -> dict
    def check_schema(self, schema: dict) -> dict

Validation Result

{
    "valid": True,  # or False
    "errors": [],   # List of error details
    "path": "$",    # JSON path to data root
}

# With errors:
{
    "valid": False,
    "errors": [
        {
            "message": "'name' is a required property",
            "path": "$",
            "schema_path": "required"
        },
        {
            "message": "-5 is less than minimum 0",
            "path": "$.age",
            "schema_path": "properties.age.minimum"
        }
    ]
}

Schema Examples

Object Schema

schema = {
    "type": "object",
    "properties": {
        "id": {"type": "integer"},
        "name": {"type": "string", "minLength": 1},
        "email": {"type": "string", "format": "email"},
        "active": {"type": "boolean", "default": True}
    },
    "required": ["id", "name", "email"],
    "additionalProperties": False
}

Array Schema

schema = {
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "id": {"type": "integer"},
            "value": {"type": "number"}
        }
    },
    "minItems": 1,
    "uniqueItems": True
}

Nested Schema

schema = {
    "type": "object",
    "properties": {
        "user": {
            "type": "object",
            "properties": {
                "name": {"type": "string"},
                "address": {
                    "type": "object",
                    "properties": {
                        "street": {"type": "string"},
                        "city": {"type": "string"}
                    }
                }
            }
        }
    }
}

Generate Schema from Data

validator = JSONValidator()

sample_data = {
    "name": "Product A",
    "price": 29.99,
    "tags": ["electronics", "sale"],
    "inStock": True
}

schema = validator.generate_schema(sample_data)
# Returns inferred schema based on data types

Supported Keywords

Type Validation

  • type: string, number, integer, boolean, array, object, null
  • enum: allowed values
  • const: exact value

String Validation

  • minLength, maxLength
  • pattern: regex pattern
  • format: email, uri, date, date-time, ipv4, ipv6, uuid

Number Validation

  • minimum, maximum
  • exclusiveMinimum, exclusiveMaximum
  • multipleOf

Array Validation

  • items: schema for items
  • minItems, maxItems
  • uniqueItems
  • contains

Object Validation

  • properties: property schemas
  • required: required properties
  • additionalProperties
  • minProperties, maxProperties
  • patternProperties

Error Handling

result = validator.validate(data, schema)

if not result['valid']:
    for error in result['errors']:
        print(f"Error at {error['path']}: {error['message']}")

Dependencies

  • jsonschema>=4.20.0

Score

Total Score

55/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

1ヶ月以内に更新

+10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

Reviews

💬

Reviews coming soon