2

数値である pageCount と呼ばれるプロパティがあり、その後にページ番号に基づく情報の配列が続きます。ここで、配列の maxItems を pageCount の値と等しくなるように設定します。できる方法はありますか?私が目にするほとんどの場所では、実際には数値を使用して maxItems を定義していますが、スキーマ自体のいずれかのプロパティの値を割り当てることはできますか?

            "pageCount": {
                    "type":"number",
                    "mininum": 1,
                    "required":true
            },
            "pages": {
                    "type":"array",
                    "required":true,
                    "minItems": 1,
                    "maxItems" : <to be set as the the value of pageCount??>
4

1 に答える 1

3

json-schema Draft v04 以降、「プロパティ値」を使用して minItems を制限することはできません。minItems の標準の現在の状態によると:

このキーワードの値は整数でなければなりません。この整数は 0 以上でなければなりません。

少数の「minItems」の異なるオプションがある場合は、それぞれのスキーマを次のように記述できます。

"minArrayItems" : {
    "type" : "array",
    "minItems" : 1
}

そして、それを $ref で参照します。

"allOf" : { {
        "$ref" : "#/definitions/minArrayItems"
    }
}

このようにして、値を変更する間接的な方法が得られます (minArrayItems を変更するだけです)。

もう 1 つのオプションは、前処理ステップを追加してスキーマを動的に構築することです。

最適なオプションは、実際のコンテキストによって異なります。

于 2014-12-22T07:47:41.017 に答える