【问题标题】:How to specify / reference version of JSON Schema?如何指定/引用 JSON Schema 的版本?
【发布时间】:2017-03-14 09:35:48
【问题描述】:

我正在尝试为项目定义编码标准,并且我想指定使用 JSON Schema 版本 4。

但是,从the offical JSON Schema website 开始,如果您点击规范链接,则会将您带到the github page,然后在the IETF 进入版本 4 草案。该文件明确声明它是一份互联网草案文件,并说:

Internet-Drafts 是有效期最长为六个月的草稿文件 并且可能随时被其他文件更新、替换或废止 时间。不宜使用 Internet-Drafts 作为参考 材料或引用它们,而不是作为“正在进行的工作”。

由于除了 Internet-Draft 状态之外似乎没有任何版本的 JSON Schema,我应该如何引用它?

编辑:这是在书面项目文档中,而不是在 JSON 文件本身中。我目前有这样的文字:

Python 标准和风格

  • 所有 Python 源文件都必须写入 Python 3.x,专门针对 Python 3.5.1 作为默认 Python 3 使用 Ubuntu 16.04 LTS 安装。
  • 所有 Python 源文件都必须 符合 PEP 8 标准 [脚注: https://www.python.org/dev/peps/pep-0008/ ]。
  • 所有 Python 源文件 必须通过 flake8 [脚注: https://pypi.python.org/pypi/flake8/3.2.1 ] 每次发货前检查。 检查器必须设置为超级迂腐,并且必须是 如果检查员需要更改任何内容,则认为单元测试失败 在签入的源文件上。
  • 所有 Python 源文件都应该使用 符合 PEP 257 标准的文档字符串 [脚注: https://www.python.org/dev/peps/pep-0257/ ]。
    JSON 标准和样式
  • 所有 JSON 源文件必须以 JSON Schema 版本 4 编写 [脚注:https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-04]。
  • 全部 JSON 源文件必须符合 Google JSON 样式指南 0.9 [脚注:https://google.github.io/styleguide/jsoncstyleguide.xml]
  • 所有 JSON 源文件必须传递一个 jsonschema [脚注: https://python-jsonschema.readthedocs.io/en ] 在每个之前检查 交货。检查器必须设置为超级迂腐,并且必须 如果检查器需要更改,则被视为单元测试失败 签入源文件中的任何内容。
    TOML 标准和样式
  • 所有 TOML 源文件必须遵守 TOML 标准的 v0.4.0 [脚注: https://github.com/toml-lang/toml ]。
  • 所有 TOML 源文件必须是可加载的 使用 pytoml 解析器 v0.1.11 [脚注: https://github.com/bryant/pytoml ],没有错误。
  • 所有 TOML 源文件都应该是 在左边距对齐 - 即不缩进子部分。

对我来说,JSON Schema 引用的斜体脚注将被视为引用 Internet-Draft 文档,在我上面给出的摘录中明确指出它不合适。

【问题讨论】:

    标签: json jsonschema


    【解决方案1】:

    因为似乎没有任何版本的 JSON Schema 除了 Internet-Draft 状态之外的任何内容,我应该如何参考 这个?

    你这样做:

    {
        "$schema":"http://json-schema.org/draft-04/schema#",
        ... // the rest of your schema
    }
    

    仅仅因为标准是草案格式并不意味着它不再是标准。

    现在,您还可以选择在没有 $schema 声明的情况下创作模式,它仍然完全有效。如果您这样做并使用正确的 JSON 模式草稿 v4 定义,那么所有支持草稿 v4 的解析器都可以使用它。但是,约定是使用 $schema 声明。

    • 所有 JSON 源文件必须以 JSON 架构版本 4 编写

    您不希望所有 JSON 文件都是基于模式的 - 这太可笑了。但是,从文档的角度来看,您确实需要的任何模式文件都别无选择,只能参考标准的版本。即使是草稿,该版本也应该是草稿 4。

    另一种方法是完全删除对 JSON Schema 的任何引用,这可能是我会采取的路线。

    【讨论】:

    • 我想在一个项目文档中引用架构版本,该文档描述了所有正在使用的语言的编码风格和标准。例如,对于 Python,我引用的是 Python 3.5.1 和 PEP-8。我将编辑问题以使其更清楚。
    • @Vicky 我已更新我的答案以反映您的评论。
    • 谢谢 - 这实际上有助于澄清我对 JSON 文档和 JSON 模式之间区别的根本误解。我真正想要的参考只是 ECMA-404 标准。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多