3

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
                                }
                            }

                    }
                }

        }
    }
}
4

0 に答える 0