PHPでJSONバリデート

こちらを参考にさせて頂きました。→ JSON SchemaとPHP - 泥のように

KnpJsonSchemaBundle by KnpLabs っていうのがあるみたいなのですが、

  • require php >=5.4
  • This bundle is in development stage!!! Do not use it in production.

とのことなので、見送り。

justinrainbow/json-schema · GitHub を使うことにします。

composer.json

{
    "require": {
        "justinrainbow/json-schema": "~1.3"
    }
}

を追加して、

$ php composer.phar update justinrainbow/json-schema

テストコードを書いて試してみます。

use JsonSchema;

class JsonSchemaTest extends \PHPUnit_Framework_TestCase
{
    public function testJsonSchema()
    {
        $data = <<< JSON
{
    "address":{
        "streetAddress": "2nd Street",
        "city":"Tokyo"
    },
    "phoneNumber":
    [
        {
            "type":"HOME",
            "number":"xxx xxx 9999"
        }
    ]
}
JSON;

        $schema = <<< SCHEMA
{
    "type":"object",
    "properties":{
        "address": {
            "type":"object",
            "properties":{
                "city": {
                    "type":"string"
                },
                "streetAddress": {
                    "type":"string"
                }
            }
        },
        "phoneNumber": {
            "type":"array",
            "items":
                {
                    "type":"object",
                    "properties":{
                        "number": {
                            "type":"string"
                        },
                        "type": {
                            "type":"string"
                        }
                    }
                }
        }
    }
}
SCHEMA;

        $validator = new JsonSchema\Validator();
        $validator->check(json_decode($data), json_decode($schema));

        $this->assertTrue($validator->isValid());
    }
}

ワォ!