2016-08-07 11 views
0

こんにちは!JSONスキーマ:少なくとも1つの非配置配列要素が必要です

JSONスキーマコードとJSON配列の検証に問題があります。私の問題は、特定のスキーマを遵守するには、配列内の少なくとも1つの要素が必要ですが、残りの要素は自由形式である可能性があります。私は検索された要素が配列の特定の位置にあると仮定することはできません。整数だけを使用すると(簡単にするために)、問題は次のように言い換えることができます。「その位置に関係なく配列に少なくとも1つがあることを検証するスキーマを作成する」正の例は次のようになります。

[1] 
[0, 0, 1] 
["a", true, null, 1, false, null, 3.2] 
[1, 1, 1, 1] 

悪い例は次のようになります。

[] 
["a"] 
[0, 2, 4] 

json-schema.org(ドラフト04)でドキュメントを使用し、二重否定を使用して、私は私自身の解決策を考え出したJSON Schema Validatorで遊んでそして、かなり面倒に感じている:

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "id": "testid", 
    "title": "test array schema", 

    "not": { 
    "items": 
     { 
     "not": { "enum": [1] } 
     } 
    } 
} 

それが電子を動作しますが、非常にない感じた、「ない(何でも-アイテム(されていない1))」の原則を使用していますlegant。私が忘れてしまった配列のための「要求」のようなものがありますか?

フィードバックありがとうございます!

答えて

0

あなたは何も欠けていません。すべての項目に対してスキーマを指定することも、各索引にスキーマを指定することもできます。それだけであなたが作業しなければならないことがあります。

ドラフト05のキーワードcontainsが提案されていますが、ドラフト05の進捗状況はしばらく停止しています。あなたが持っているスキーマは、ドラフト04でできる最高です。

+0

素晴らしい、ありがとう、ジェイソン!あなたが提供したリンクは本当に役に立ちました。私は解決策を探していたときにドラフト05の提案を見つけず、実際には、提案された 'contains'キーワードが私が探していたものです。それで' contains'を使ってより洗練されたスキーマを得るための解決策は:待っている。 – TheRealISA

関連する問題