ときどき、次のJSONスキーマに気づきました。
{
"type": "object",
"properties": {
"address": {
"type": "string",
"required": true
}
}
}
対
{
"type": "object",
"properties": {
"address": {
"type": "string",
"optional": false
}
}
}
では、上記の例のrequired
とoptional
の違いは何ですか?
これは、オブジェクトがundefined
プロパティに対してaddress
以外の値を持っている必要があることを意味します(required
の場合)。
JSONスキーマの IETFドラフトv4 はrequired
のみを定義し、optional
を含みません。
ドラフトv4のrequired
に section を引用するには:
有効な値:このキーワードの値は配列である必要があります。この配列には少なくとも1つの要素が必要です。この配列の要素は文字列である必要があり、一意である必要があります。
検証が成功するための条件:プロパティセットにこのキーワードの配列値のすべての要素が含まれている場合、オブジェクトインスタンスはこのキーワードに対して有効です。
実際、required
を使用すると、指定された文字列の配列に名前が含まれていないすべてのプロパティがオプションになります。
実際、これらは同等の式ですが、異なるバージョンの標準を使用しています。
optional
はv2から、required
はv3からです。ツールに適切なものを使用していることを確認する必要があります(可能であれば、v4に移行するのが理想的です)。