Skip to content
Back to skills

Json Schema Validator

ASecurity

Validate JSON data against JSON Schema specifications. Use for API validation, config file validation, or data quality checks.

  • 99 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 7, 2026
data-aipythonbashapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned February 12, 2026

npx -y skills add dkyazzentwatwa/chatgpt-skills --skill json-schema-validator --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Json Schema Validator?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Json Schema Validator
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dkyazzentwatwa-json-schema-validator/badge)](https://www.skillsdirectory.com/skills/dkyazzentwatwa-json-schema-validator)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
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

```python
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

```bash
# 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

```python
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

```python
{
    "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
```python
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
```python
schema = {
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "id": {"type": "integer"},
            "value": {"type": "number"}
        }
    },
    "minItems": 1,
    "uniqueItems": True
}
```

### Nested Schema
```python
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

```python
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

```python
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

Files in this skill

  • SKILL.md4.6 KB
  • scripts/json_validator.py10.3 KB
  • scripts/requirements.txt19 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.