バリデーション
ajvが簡単で良い。
npm install -g ajv-cli
ajv validate -s スキーマ -d データ
簡単なJSON Schemaの作り方
- https://www.jsonschema.net/ に行く
- ギアアイコンをクリックして設定
- Annotationsの「Infer Title」「Infer Default」「Infej Example」を削除(どうせ使わない)
- これらはそれぞれtitle, default, exampleに該当する。
- idも基本的には不要。
- Annotationsの「Infer Title」「Infer Default」「Infej Example」を削除(どうせ使わない)
- JSONを貼り付ける
INFER SCHEMA
ボタンを押す- inferは推論という意味。よって「スキーマを推論」になる。
これでそれっぽいものができるので、カスタマイズしていくのもいいかも。
ただしこれで作成したものは以下の点に注意する必要がある。
- 改行が入っているとダメ。正規表現を
"^(\n|.)*$"
にするとOK。
書き方
type: 型
-
Type-specific keywords — Understanding JSON Schema 6.0 documentation
-
“null”
-
“object”
-
“string”
-
“array”
-
“boolean”
-
“integer”
-
“number”
-
または [“number”, “string”] のように配列で指定
items: arrayの中の定義
例えばstringのarrayを表す書き方は以下の通り。
{
"type": "array",
"items": {
"type": "string"
}
}
enum: 許容する値の一覧
例えば “red”, “green” のみを許容する書き方は以下の通り。
{
"type": "string",
"enum": ["red", "green"]
}
properties: オブジェクトのプロパティ
オブジェクトに対して、文字列の値を持つ"key"プロパティを定義する場合。
{
"type": "object",
"properties": {
"key": {
"type": "string"
}
}
}
必須項目は"required"を定義する。
{
"type": "object",
"properties": {
"key": {
"type": "string"
}
},
"required": ["key"]
}
不明なプロパティをエラーにしたい
additionalProperties: false
を追加
oneOf, anyOf, allOf
配列のいずれか1つ、任意のもの、全てを表す