无论如何,我需要在json模式中定义字典

I there anyway to define a dict in jsoncschema?

本文关键字:模式 定义 字典 json 无论如何      更新时间:2023-09-26

我正在尝试为object类型定义模式。是否有一种方法可以允许任何属性名称,但将所有属性值限制为遵循某个模式。这样我可以允许任何key,并确保所有values具有相同的结构/类型。

additionalProperties关键字可以是布尔值也可以是模式

如果它是一个模式,那么该模式必须应用于任何不匹配propertiespatternProperties的属性。因此,如果键可以是任何值,那么模式就是:

{
    "type": "object",
    "additionalProperties": {"type": "integer"}
}

如果您想限制键,则需要使用patternProperties—例如,仅使用小写字母:

{
    "type": "object",
    "patternProperties": {
        "^[a-z]+$": {"type": "object"}
    },
    "additionalProperties": false
}

由于您希望允许任何属性名称,因此additionalProperties是您的最佳解决方案。

看起来patternProperties做了我想要的。

我可以直接输入

{
  "type": "object",
  "patternProperties": {
    "*": { "type": "integer" }
  },
  "additionalProperties": false
}

允许任意键,并限制所有值为整数