将相同架构应用于多个动态属性

问题描述 投票:0回答:1

我有一个像这样的 JSON 架构:

{
    "$id": "<some id here>",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "settings": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "setting_1": {
                    "type": "string"
                },
                "setting_2": {
                    "type": "string"
                },
                "setting_3": {
                    "type": "string"
                }
            },
            "required": [
                "setting_1",
                "setting_2",
                "setting_3"
            ]
        }
    },
    "required": [
        "settings"
    ]
}

还有更多条目,如

setting_1
setting_2
等。有没有办法可以应用配置:

{"type": "string"}

有效地实现所有这些属性?我知道我们可以使用

$def
,但是它不会带来任何显着的行数减少,因为通用配置只是一个键值对。

谢谢你

jsonschema
1个回答
0
投票

如果只有属性名称是动态的,则可以将

additionalProperties
与模式一起使用

{
    "$id": "<some id here>",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "settings": {
            "type": "object",
            "additionalProperties": {
                    "type": "string"
        }
    },
    "required": [
        "settings"
    ]
}

这会给你一个例子

{
  "settings": {
     "foo": "foo",
     "bar": "bar",
     "baz": "baz"
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.