19

架构草案 4 中存在哪些 IETF 生成的 JSON 架构草案 3 中没有的功能?

4

2 回答 2

31

从更改日志中:

新关键字

  • anyOf(匹配模式数组中的至少一个模式),
  • allOf(匹配模式数组中的所有模式),
  • oneOf(与模式数组中的一个模式完全匹配),
  • 不(不匹配架构),
  • multipleOf(替换 divisibleBy),
  • minProperties 和 maxProperties(对象实例中的最小和最大成员数),
  • 定义(内联子模式的标准化容器)。

删除:

  • 不允许
  • 延伸
  • 可除

功能改变:

类型

  • 当值是一个数组时,模式不再被允许作为元素。此外,数组必须至少有一个元素。


{
    "type": [ "string", { "other": "schema" } ]
}

现在


{
   "anyOf": [
       { "type": "string" },
       { "other": "schema" }
    ]
}

必需的

  • 以前,它是属性中子模式的属性。它现在是扮演相同角色的第一级关键字,并且有一个字符串数组作为参数。


{
    "properties": {
        "p": {
            "type": "string",
            "required": true
        },
        "q": {
            "type": "string",
            "required": true
        }
    }
}

现在


{
    "properties": {
        "p": { "type": "string" },
        "q": { "type": "string" }
    },
    "required": [ "p", "q" ]
}

依赖项

  • 不再允许属性依赖项中的单个字符串,只允许使用数组


{
    "dependencies": { "a": "b" }
}

现在


{
    "dependencies": { "a": [ "b" ] }
}
于 2013-07-11T20:44:09.623 回答
6

如果您对深入研究感兴趣,可以在 IETF 网站上查看两个草案之间的差异

但是,如果您正在寻找更简单的更改摘要,Geraint Luff 和 Francis Galiegue 在项目的 github wiki 上创建了一个更改日志页面,其中列出了更改、添加和删除。

于 2013-07-02T06:47:57.087 回答