ergebnis / json-schema-validator
Provides a JSON schema validator, building on top of justinrainbow/json-schema.
Installs: 5 836 435
Dependents: 4
Suggesters: 0
Security: 0
Stars: 18
Watchers: 2
Forks: 0
Open Issues: 1
Requires
- php: ^8.0
- ext-json: *
- ergebnis/json: ^1.0.0
- ergebnis/json-pointer: ^3.2.0
- justinrainbow/json-schema: ^5.2.12
Requires (Dev)
- ergebnis/composer-normalize: ^2.21.0
- ergebnis/data-provider: ^1.2.0
- ergebnis/license: ^2.1.0
- ergebnis/php-cs-fixer-config: ~5.0.0
- fakerphp/faker: ^1.20.0
- infection/infection: ~0.26.16
- phpunit/phpunit: ~9.5.27
- psalm/plugin-phpunit: ~0.18.4
- vimeo/psalm: ^5.1.0
README
Provides a JSON schema validator, building on top of justinrainbow/json-schema
.
Installation
Run
composer require ergebnis/json-schema-validator
Usage
If you have used the validator from justinrainbow/json-schema
before, you might have observed that it has a few flaws:
- The validator is stateful.
- The validator requires decoding JSON strings before validating them.
- The validator returns an
array
of errors, where each error is anarray
.
This package delegates the validation to justinrainbow/json-schema
and provides a friendlier interface.
<?php declare(strict_types=1); use Ergebnis\Json\Json; use Ergebnis\Json\Pointer; use Ergebnis\Json\SchemaValidator; $json = Json::fromFile('composer.json'); $schema = Json::fromString(file_get_contents('https://getcomposer.org/schema.json')); $jsonPointer = Pointer\JsonPointer::document(); $schemaValidator = new SchemaValidator\SchemaValidator(); $result = $schemaValidator->validate( $json, $schema, $jsonPointer ); var_dump($result->isValid()); // bool var_dump($result->errors()); // flat list of `ValidationError` value objects
Changelog
Please have a look at CHANGELOG.md
.
Contributing
Please have a look at CONTRIBUTING.md
.
Code of Conduct
Please have a look at CODE_OF_CONDUCT.md
.
Security Policy
Please have a look at SECURITY.md
.
License
This package is licensed using the MIT License.
Please have a look at LICENSE.md
.
Curious what I am up to?
Follow me on Twitter!