web-dev-qa-db-ja.com

JSONスキーマの「必須」と「オプション」の違いは何ですか

ときどき、次のJSONスキーマに気づきました。

{
    "type": "object",   
    "properties": {
        "address": {
                   "type": "string",
                   "required": true
            }
     }

}

{
    "type": "object",   
    "properties": {
        "address": {
                   "type": "string",
                   "optional": false
            }
     }

}

では、上記の例のrequiredoptionalの違いは何ですか?

41
Cory

これは、オブジェクトがundefinedプロパティに対してaddress以外の値を持っている必要があることを意味します(requiredの場合)。

5
Explosion Pills

JSONスキーマの IETFドラフトv4requiredのみを定義し、optionalを含みません。

ドラフトv4のrequiredsection を引用するには:

有効な値:このキーワードの値は配列である必要があります。この配列には少なくとも1つの要素が必要です。この配列の要素は文字列である必要があり、一意である必要があります。

検証が成功するための条件:プロパティセットにこのキーワードの配列値のすべての要素が含まれている場合、オブジェクトインスタンスはこのキーワードに対して有効です。

実際、requiredを使用すると、指定された文字列の配列に名前が含まれていないすべてのプロパティがオプションになります。

34

実際、これらは同等の式ですが、異なるバージョンの標準を使用しています。

optionalはv2から、requiredはv3からです。ツールに適切なものを使用していることを確認する必要があります(可能であれば、v4に移行するのが理想的です)。

21
cloudfeet