【问题标题】:How to indicate dynamic additions support in json schema?如何在 json 模式中指示动态添加支持?
【发布时间】:2021-09-19 10:56:34
【问题描述】:

刚开始使用 jsonschema。我想描述一个属性的对象集合,其中可能不知道先验的键。

这是我的出发点:

                "tx_properties": {
                    "type": "object",
                    "anyOf": [
                        {
                            "required": [
                                "original_msg"
                            ]
                        }
                    ],
                    "properties": {
                        "original_msg": {
                            "type": "string"
                        }
                    }
                }
            }

我希望能够验证为 tx_properties 添加的更多属性,这些属性可能具有不同的类型,但在架构定义时未知。

例如我可能有,在 json 中:

"tx_properties": {
    "original_msg": "foo",
    "something_else": "bar",
    "or_something_numeric": 172,
    "or_even_deeper_things": {
        "fungible": false,
    }
}

作为一个 n00b,我对如何实现这一点有点困惑。 anyOne 的使用是我认为至少在最终解决方案中需要的。

【问题讨论】:

  • 默认情况下,您可以向对象添加任何内容,前提是仅当您指定 additionalProperties: false 时,这是不正确的。可能我理解错了
  • @Evert 你是说使用我在消息顶部描述的架构,如果我根据我也展示的数据示例进行验证......它会验证好吗?跨度>
  • 你的意思是你还没试过?
  • @Evert 还没有......我需要让测试数据生成器运行,但到 EOD 我应该
  • @Evert - 工作,感谢您的洞察力和 Ether 扩展并包含链接。

标签: jsonschema


【解决方案1】:

正如@Evert 所说,"additionalProperties": false 可用于表示除properties 关键字(和patternProperties)中列出的属性外,不允许使用其他属性。如果additionalProperties 被省略,则行为就像架构说"additionalProperties": true 一样(即允许附加属性)。

另请注意,additionalProperties 处的值不必是布尔值:它本身可以是子模式,以允许您根据值有条件地允许附加属性。

参考:https://json-schema.org/understanding-json-schema/reference/object.html#additional-properties

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 2011-06-10
    • 2017-03-18
    • 2012-09-16
    • 2013-02-23
    • 1970-01-01
    相关资源
    最近更新 更多