在架构创建和验证中使用JSON.NET和oneOf,anyOf行为?

时间:2013-05-31 11:09:36

标签: validation schema json.net

尝试使用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
        }
    }
}

这是我的架构(下图),并尝试使用min / max Items来执行(我认为)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
                                }
                            }

                    }
                }

        }
    }
}

0 个答案:

没有答案