2013-02-13 1 views
2

주어진 스키마에 대해 JSON 객체의 유효성을 검사하려고합니다. 다음과 같이JSON 스키마에 대한 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 스키마는 다음과 같습니다

{ 
"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 \ 검사기를 사용하여이 JSON의 유효성을 검사하고있다.

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

문제는 유효성 검사기가 매번 JSON 개체의 유효성을 검사한다는 것입니다. 맨 위에있는 예제에서는 "lat"및 "lon"속성이 누락되었습니다. 전체 "places", "title"또는 "dateCreated"속성을 생략해도 올바른 것으로 검증됩니다.

내가 누락 된 자료가 있습니까? JSON 스키마에 대한 문서를 살펴 보았지만 나에게 도움이되는 것은 아무것도 없었다.

+1

유효성 검사 라이브러리에서 사용하는 스키마 표준 버전은 무엇입니까? v4에서'required'는 이제 부울 대신 배열입니다. – cloudfeet

+0

아무도 PHP에 대한 좋은 schema4 검사기를 알고 있습니까? 아무것도 제대로 작동하지 않는 것 같습니다. – chris

답변

1

이것이 저에게 효과적입니다.