基本表現 -2
JSON Schemaの先頭には、おまじないを記述します。ここではその内以下の2つを紹介します。
|
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://ppp-database.org/spec/datamodel/データモデル名", |
一行目は準拠しているJSON Schemaのバージョンを指定します。指定は、リンクの形式で、指定します。
二行目は準拠しているデータモデルの定義場所をリンクの形式で指定します。本項は共通データ仕様に準拠しているので、そのURLを指定します。
前項の記述で、「補足情報」の記述しましたが、ここに色々記述する事で、色々な制約事項を記述する事が可能です。
■必須項目
必須項目は、"required":["項目名1","項目名2"・・・}という形式で記述します。記述箇所はオブジェクト内にpropertiesと同列に記述します。
今回の例では、Attributeとしてはidとtyprがありますが、childの下のtypeとvalueも必須です。
■固定値
typeのExampleやchildの下のtypeのStructuredValueも固定値です。固定値は"const":"固定値"で記述します。記述箇所は値の記述の中でtypeと同列に記述します。
■Array内の個数の制限
Arryの要素の数を制約したい場合は"minItems"と"maxItems"で指定します。
■値の形式 その1
値の形式を:形式名で指定できます。例えば、
"type": "string",
"format": "uri"
の様に指定します。}但し、形式が正しいかどうかのチェックをサポートしているかどうかは、実装に依存します。また、実装していても、どこまでチェックしてくれるのかも、実装に依存します。一般的には、"uri"<"date"、"date-time"、"email"等があります。現在は、本ツールでは無視されます。
■値の形式 その2
値の形式を正規表現で指定できます。例えば、
"type": "string",
"pattern": "^ABC\\d{16}-\\d+$"
の様に指定します。}但し、形式が正しいかどうかのチェックをサポートしているかどうかは、実装に依存します。また、実装していても、どこまでチェックしてくれるのかも、実装に依存します。対象は文字列の項目だけです。現在は、本ツールでは無視されます。
■列挙型項目
列挙型項目とは、プルダウンメニューの様に登録出来る値が鍵らけている項目です。
"enum": ["A","B","C"]
の様に指定します。本ツールでは無視されます。
前記の例にこれらの制約を記述すると以下となります。あだ名の数の制約は1個から3個としました
|
{
"$schema": "http://json-schema.org/draft-07/schema#",
"@id": "https://ppp-database.org/spec/datamodel/Example",
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string",
"const": "Example"
},
"child": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "StructuredValue
},
"value": {
"type": "object",
"properties": {
"age": {
"type": "integer"
},
"name": {
"type": "string"
},
"nickname": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 3
}
}
}
},
"required": ["type","value"]
}
},
"required": ["id","type"]
} |
追加した記述は青字にしてあります。