zerifas/json

此软件包的最新版本(3.0.0)没有可用的许可证信息。

定义您的JSON文档的架构,并对它们进行验证

3.0.0 2022-12-15 21:35 UTC

This package is auto-updated.

Last update: 2024-09-16 01:08:53 UTC


README

这是一个小型库,允许您为您的JSON文档定义一个架构,验证它们,并获得一个“安全”的文档版本,其中所有可选值都设置为默认值。

安装

使用 composer

$ composer required zerifas/json

使用方法

<?php

require 'vendor/autoload.php';

use Zerifas\JSON;

$schema = new JSON\Obj([
    'id' => new JSON\Number(),
    'enabled' => new JSON\OptionalBoolean(false),
    'array' => new JSON\Arr(),
    'stringArray' => new JSON\Arr(new JSON\Str()),
    'optionalArray' => new JSON\OptionalArr(),
    'optionalStringArray' => new JSON\OptionalArr(new JSON\Str()),
    'optionalObj' => new JSON\OptionalObj(
        [
            'name' => new JSON\Str(),
        ],
        [
            'name' => 'Alice',
        ]
    ),
]);
$v = new JSON\Validator($schema);

$json = '{"id":1,"array":[],"stringArray":["Hello","World"]}';
if ($v->isValid($json)) {
    $doc = $v->getDocument();
    echo implode(', ', $doc->stringArray), PHP_EOL; // Hello, World
    echo $doc->optionalObj->name, PHP_EOL; // Alice
}

// This is not valid for 2 reasons: `id` is missing, and `array` is a number.
$json = '{"array":15,"stringArray":[]}';
if (!$v->isValid($json)) {
    // Errors will be an array:
    // [
    //     'Key path \'id\' is required, but missing.',
    //     'Key path \'array\' should be array, but is number.',
    // ]
    foreach ($v->getErrors() as $err) {
        echo $err, PHP_EOL;
    }
}