JSON.NET を使用してスキーマを構築し、RGB または CMYK として提供される色を検証しようとしています。
これは検証する必要があります:
{
"color": {
"RGB": {
"r": 100,
"g": 100,
"b": 100
}
}
}
これはすべきではありません:
{
"color": {
"RGB": {
"r": 100,
"g": 100,
"b": 100
},
"CMYK": {
"c": 5,
"m": 10,
"y": 60,
"k": 30
}
}
}
これは私のスキーマ(以下)であり、最小/最大アイテムを使用して(私が思うに)oneOfが行うことを試みました。「oneOf」を直接使用していない理由は、スキーマを文字列として渡す代わりに、JSON.NET を使用して必要なコードにこれを追加する機能がないように見えるためです。JObject.Parse(...) を使用できるようにしたいのですが、何かが機能していて、JSON.NET で oneOf/anyOf に関連するドキュメントが見つかりませんでした。どんなポインタでも大歓迎です
{
"id": "color_spec.json",
"type": "object",
"required" : true,
"properties": {
"color": {
"type": "object",
"required" : true,
"minItems" : 1,
"maxItems" : 1,
"properties":
{
"RGB": {
"type": "object",
"required" : true,
"properties":
{
"r": {
"type": "number",
"required" : true
},
"g": {
"type": "number",
"required" : true
},
"b": {
"type": "number",
"required" : true
}
}
},
"CMYK": {
"type": "object",
"properties":
{
"c": {
"type": "number",
"required" : true
},
"m": {
"type": "number",
"required" : true
},
"y": {
"type": "number",
"required" : true
},
"k": {
"type": "number",
"required" : true
}
}
}
}
}
}
}