首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON架构不验证缺少的属性。

JSON架构不验证缺少的属性。
EN

Stack Overflow用户
提问于 2020-12-30 15:10:31
回答 1查看 337关注 0票数 0

谢谢你提前帮忙。这是我糟糕的一天。

我有下面的json,我正在尝试为它找出模式。不幸的是,我被困在一个没有错误迹象的点上。

请告知解决方案

代码语言:javascript
复制
{
    "tables_not_to_mask": ["Table_1"],
    "tables_to_mask":{
        "Table_2": [
            {
                "column": "BinLogFilename",
                "masking_type": "replace_logfilename"
            },
            {
                "column": "ServerId",
                "masking_type": "replace_server_id"
            }
        ],
        "Table_3": [
            {
                "column": "BinLogFilename",
                "masking_type": "replace_logfilename"
            },
            {
                "column": "ServerId",
                "masking_type": "replace_server_id"
            }
        ]
     }
}

Table_1,Table_2,。是动态添加的。我已经创建了模式,它应该在下面验证JSON输入,

  1. tables_not_to_mask和tables_to_mask是required.
  2. tables_to_mask,如果tables_to_mask中有表,则可以有零或多个表
  3. ,可以有零到多列,masking_type defined.
  4. column和masking_type是强制性的,没有人是单列的。

我为它创建了模式,不幸的是,如果我删除列或masking_type,模式不会抛出任何错误。

代码语言:javascript
复制
    {
    "title": "Schema title",
    "description": "Description of the schema",
    "type": "object",
    "properties": {
        "tables_not_to_mask": {
            "type": "array",
            "minItems": 0,
            "items": {"type": "string"}
        },
        "tables_to_mask": {
            "type": "object",
            "patternProperties": {
                ".*": {
                    "type": "array",
                    "minItems": 0,
                    "properties": {
                        "column": {"type": "string"},
                        "masking_type": {"type": "string"}
                    },
                    "required": [
                        "masking_type",
                        "column"
                    ]
                }
            }
        }
    },
    "required": [
        "tables_not_to_mask",
        "tables_to_mask"
    ]
}
EN

回答 1

Stack Overflow用户

发布于 2020-12-31 07:32:24

最后,我得到了答案。谢谢你调查。

代码语言:javascript
复制
 {
    "$schema": "https://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "tables_not_to_mask":
        {"$ref": "#/definitions/tables_not_to_mask_type"},
        "tables_to_mask":
        {"$ref": "#/definitions/tables_to_mask_type"}
    },
    "required": [
        "tables_not_to_mask",
        "tables_to_mask"
    ],
    "definitions": {
        "tables_not_to_mask_type": {
            "type": "array",
            "minItems": 0,
            "items": {"type": "string"}
        },
        "tables_to_mask_type": {
            "type": "object",
            "patternProperties": {
                ".*": {"$ref": "#/definitions/tables_type"}
            }
        },
        "tables_type": {
            "type": "array",
            "minItems": 0,
            "items": {
                "type": "object",
                "properties": {
                    "column": {"type": "string"},
                    "masking_type": {"type": "string"}
                },
                "required": [
                    "masking_type",
                    "column"
                ]
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65509146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档