3

我正在尝试针对我给定的架构验证 JSON 对象。

JSON数据如下:

{
"list": {
    "places": [
        {
            "name": "Loopsiloo",
            "foursquareID": "54a6s5D4a6s5d4a6s5D4",
            "lat": 26.6546845354889,
            "lon": -99.6846873700158
        },
        {
            "name": "Loopsiloo",
            "foursquareID": "54a6s5D4a6s5d4a6s5D4",
        }
    ],
    "title": "Foo Bar",
    "dateCreated": "2013-01-29T14: 19: 30Z"
}

JSON Schema 如下:

{
"type":"object",
"$schema": "http://json-schema.org/draft-03/schema",
"required":true,
"properties":{
    "list": {
        "type":"object",
        "id": "list",
        "required":true,
        "properties":{
            "dateCreated": {
                "type":"string",
                "id": "dateCreated",
                "required":true
            },
            "places": {
                "type":"array",
                "minitems": "1",
                "id": "places",
                "required":true,
                "items":
                {
                    "type":"object",
                    "required":true,
                    "properties":{
                        "note": {
                            "type":"string",
                            "id": "note",
                            "required":false
                        },
                        "foursquareID": {
                            "type":"string",
                            "id": "foursquareID",
                            "required":true
                        },
                        "lat": {
                            "type":"number",
                            "id": "lat",
                            "required":true
                        },
                        "lon": {
                            "type":"number",
                            "id": "lon",
                            "required":true
                        },
                        "name": {
                            "type":"string",
                            "id": "name",
                            "required":true
                        }
                    }
                }


            },
            "title": {
                "type":"string",
                "id": "title",
                "required":true
            }
        }
    }
}

}

我在 PHP 中使用 JsonSchema\Validator 验证这个 JSON。

$validator = new JsonSchema\Validator;
$validator->check($data, file_get_contents(__DIR__ . '/../model/api-schema.json'));

我的问题是验证器每次都验证 JSON 对象是否正确。在顶部的示例中,缺少属性“lat”和“lon”。即使我省略了整个“places”、“title”或“dateCreated”属性,它也被验证为正确。

有什么我想念的吗?我浏览了 JSON 模式的文档,但没有什么可以帮助我。

4

1 回答 1

1

这对我有用。

$validator = new JsonSchema\Validator;
$schema = file_get_contents(__DIR__ . '/../model/api-schema.json');
$validator->check(json_decode($data), json_decode($schema));
于 2013-10-02T07:37:50.663 回答