2017-01-30 23 views
1

以下のJsonスキーマとJson Documentはどちらも有効なjsonです。 jsonスキーマに関して有効なJsonドキュメントを取得できません。JSON文書がJSONスキーマで検証に失敗する

私が言ってエラーが表示されます。したがって、それは、は、追加のプロパティ"users"プロパティは、スキーマから欠落している

JSON Schemaの

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "Movies Schema", 
    "description": "Movies schema containing ratings and genres", 
    "type": "array", 
    "items": { 
    "type": "object", 
    "additionalProperties": false, 
    "properties": { 
     "id": { 
     "type": "number" 
     }, 
     "title": { 
     "type": "string" 
     }, 
     "release_date": { 
     "type": "string" 
     }, 
     "video": { 
     "type": "string" 
     }, 
     "IMDBURL": { 
     "type": "string" 
     }, 
     "genres": { 
     "type": "array" 
     } 
    }, 
    "required": [ 
     "id", 
     "title", 
     "release_date", 
     "video", 
     "IMDBURL", 
     "genres" 
    ] 
    }, 
    "users": { 
    "type": "object", 
    "additionalProperties": false, 
    "properties": { 
     "user_id": { 
     "type": "number" 
     }, 
     "ratings": { 
     "type": "number" 
     }, 
     "timestamps": { 
     "type": "string" 
     } 
    }, 
    "required": [ 
     "user_id", 
     "ratings", 
     "timestamps" 
    ] 
    } 
} 

JSONドキュメント

[ 
    { 
    "id": 1, 
    "title": "Kung Fu Panda", 
    "release_date": "01-01-2001", 
    "video": "", 
    "IMDBURL": "link.com", 
    "genres": [ 
     "abc", 
     "def" 
    ], 
    "users": { 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    } 
    } 
] 

答えて

1

を持つべきではありません追加のプロパティであるため、"additionalProperties": falseの設定に違反します。

スキーマに"users"プロパティを定義すると、ドキュメントが有効になります。

+0

下部にスクロールが存在することを確認してください。 –

+0

JSONオブジェクトでは、 "user"は "movie"の一部なので、スキーマでは、ムービースキーマのフィールドとして "user"を追加する必要があります –

0

問題はadditionalPropertiesの場所にありました。 ユーザーが多くのオブジェクトを持つarray型であるためです。 {}が、 "アイテム":{}

ソリューション

JSONスキーマ

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type": "array", 
    "items": { 
    "type": "object", 
    "additionalProperties": false, 
    "properties": { 
     "id": { 
     "type": "integer" 
     }, 
     "title": { 
     "type": "string" 
     }, 
     "release_date": { 
     "type": "string" 
     }, 
     "video": { 
     "type": "string" 
     }, 
     "IMDBURL": { 
     "type": "string" 
     }, 
     "genres": { 
     "type": "array", 
     "items": { 
      "type": "string" 
     } 
     }, 
     "users": { 
     "type": "array", 
     "items": { 
      "type": "object", 
      "additionalProperties": false, 
      "properties": { 
      "user_id": { 
       "type": "integer" 
      }, 
      "ratings": { 
       "type": "integer" 
      }, 
      "timestamps": { 
       "type": "string" 
      } 
      }, 
      "required": [ 
      "user_id", 
      "ratings", 
      "timestamps" 
      ] 
     } 
     } 
    }, 
    "required": [ 
     "id", 
     "title", 
     "release_date", 
     "video", 
     "IMDBURL", 
     "genres", 
     "users" 
    ] 
    } 
} 

JSON文献アイテムのプロパティはadditionalpropertiesをしないラッパー "ユーザー" を有すると仮定されています

[ 
    { 
    "id": 1, 
    "title": "Kung Fu Panda", 
    "release_date": "01-01-2000", 
    "video": "", 
    "IMDBURL": "link.com", 
    "genres": [ 
     "abc", 
     "def" 
    ], 
    "users": [{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }, 
{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }, 
{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }, 
{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }] 
    }, 
{ 
    "id": 1, 
    "title": "Kung Fu Panda", 
    "release_date": "01-01-2000", 
    "video": "", 
    "IMDBURL": "link.com", 
    "genres": [ 
     "abc", 
     "def" 
    ], 
    "users": [{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }, 
{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }, 
{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }, 
{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }] 
    }, 
{ 
    "id": 1, 
    "title": "Kung Fu Panda", 
    "release_date": "01-01-2000", 
    "video": "", 
    "IMDBURL": "link.com", 
    "genres": [ 
     "abc", 
     "def" 
    ], 
    "users": [{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }, 
{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }, 
{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }, 
{ 
     "user_id": 2, 
     "ratings": 3, 
     "timestamps": "2342478" 
    }] 
    } 
] 
関連する問題