微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JSON模式:属性值必须等于父键

如何解决JSON模式:属性值必须等于父键

根据JSON-Schema 7.0 String section,我可以使用"relative-json-pointer"来确保属性值与父键完全匹配。

Relative JSON Pointers的示例部分(5.1)中,它表明“上一层”并获取键值是"0#"

给出以下JSON文档:

{
    "valid": {
        "name": "valid"
    },"invalid": {
        "name": "invalid,because this value is not the same value as the parent key"
    }
}

以下json模式应捕获"invalid"对象:

{
    "$schema": "http://json-schema.org/draft-07/schema#","type": "object","additionalProperties": {
        "type": "object","required": ["name"],"properties": {
            "name": {
                "type": "string","json-pointer": "0#"
            }
        }
    }
}

我确定json模式是正确的,因为它将捕获以下JSON文档中的两个对象"invalid2""invalid3"

{
    "valid": {
        "name": "valid"
    },because this value is not the same value as the parent key"
    },"invalid2": {   },"invalid3": { "name": 2 }
}

我已经使用ajv-cli 3.3.0python jsonschema 3.2.0进行测试。但是,没有一种验证实现可以捕获"invalid"对象。两种实现都声称完全支持JSON Schema草案7。

解决方法

我可以使用“ relative-json-pointer”来确保属性值 是父键的完全匹配。

我不确定您如何阅读该部分,但这根本不是我要说的。

您在文档站点上引用的那一部分列出了format关键字的一组内置可能值。

它对您要验证的值(例如relative-json-pointer)不起作用。

您想做什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。