2

ファイルから JSON データを読み取ることができるソフトウェアを作成しています。このファイルには、値がオブジェクトの配列であるオブジェクトである「person」が含まれています。自分でコードを書く代わりに、JSON スキーマ検証ライブラリを使用してコンテンツを検証することを計画しています。以下のデータを表す JSON Schema Draf-4 に準拠した正しいスキーマはどれですか?

{
   "person" : [
      {
         "name" : "aaa",
         "age"  : 10
      },
      {
         "name" : "ddd",
         "age"  : 11
      },
      {
         "name" : "ccc",
         "age"  : 12
      }
   ]
}

書き留めたスキーマを以下に示します。それが正しいかどうかわかりませんが、それ以外の形式はありますか?

{
   "person" : {
      "type" : "object",
      "properties" : {
         "type" : "array",
         "items" : {
            "type" : "object",
            "properties" : {
               "name" : {"type" : "string"},
               "age" : {"type" : "integer"}
            }
         }
      }
   }
}
4

1 に答える 1

1

実際には間違った場所に 1 行しかありませんが、その 1 行でスキーマ全体が壊れています。"person" はオブジェクトのプロパティであるため、propertiesキーワードの下にある必要があります。「person」を先頭に置くことで、JSON スキーマはそれをプロパティ名ではなくキーワードとして解釈します。キーワードがないためperson、JSON スキーマはそれとその下のすべてを無視します。{}したがって、 JSON ドキュメントに含めることができる内容に制限を設けない空のスキーマに対して検証することと同じです。有効な JSON はすべて、空のスキーマに対して有効です。

{
   "type" : "object",
   "properties" : {
      "person" : {
         "type" : "array",
         "items" {
            "type" : "object",
            "properties" : {
               "name" : {"type" : "string"}
               "age" : {"type" : "integer"}
            }
         }
      }
   }
}

ところで、スキーマを作成するときに役立つオンライン JSON スキーマ テスト ツールがいくつかあります。これは私の後藤http://jsonschemaint.com/draft4/#です

また、こちらも役に立つかもしれないすばらしい JSON スキーマ リファレンスです: https://spacetelescope.github.io/understanding-json-schema/

于 2016-07-27T23:55:00.590 に答える