为什么JSON API规范建议使用连字符/减号来分隔成员名称中的单词?

Seb*_*n K 6 javascript rest json jsonschema

根据JSON API规范网站上的建议,我们应该使用JSON中用连字符分隔的所有小写成员名称:

URL安全命名成员的允许和推荐字符以规范格式定义.为了标准化成员名称,建议使用以下(更严格的)规则:

成员名称应该以字符"az"开头和结尾(U + 0061到U + 007A)成员名称应该只包含字符"az"(U + 0061到U + 007A),"0-9"(U + 0030)到U + 0039),连字符减去(U + 002D HYPHEN-MINUS," - ")作为多个单词之间的分隔符.

基本上,我们应该像这样使用JSON:

{
    "first-name": "Jason",
    "last-name": "Tough"
}
Run Code Online (Sandbox Code Playgroud)

难道不会让在JavaScript中访问这些属性变得很麻烦吗?或者任何其他编程语言,特别是如果我们想从JSON Schema生成类?

这个建议背后的动机是什么?

ToT*_*lan 5

看起来有问题的引用中的 JSONAPI 命名不再有效。目前` JSONAPI 推荐

命名

该规范对 JSON:API 文档中的成员(即键)的命名方式施加了某些硬性限制。为了进一步规范成员名称,这在混合不同方编写的配置文件时尤为重要,还建议遵循以下规则:

Member names SHOULD be camel-cased (i.e., wordWordWord)
Member names SHOULD start and end with a character “a-z” (U+0061 to U+007A)
Member names SHOULD contain only ASCII alphanumeric characters (i.e., “a-z”, “A-Z”, and “0-9”)
Run Code Online (Sandbox Code Playgroud)

所以上面的例子应该是:

{
    "firstName": "Jason",
    "lastName": "Tough"
}
Run Code Online (Sandbox Code Playgroud)


小智 2

我对此也有同样的问题,我找到了关于为什么我不应该在namingDirectives中使用下划线的解释。它不一样,但看起来很相似:

\n\n

\nThe UNDERSCORE character ("_") may be used in filenames and directory names where an application (unavoidably) generates this character, but in general, use of HYPHEN to mark juncture is preferable; the UNDERSCORE character may be visually confused with SPACE or an underline-effect in some predictable publication contexts. An UNDERSCORE must never be used in a filename or directory name that is used in a document URI \xe2\x80\x94 that is, a primary URI reference published as a document cover page URI (i.e. as required for identification of a Work Product as a whole or for identification of a separately-titled prose Part in a Multi-Part Work Product).\n

\n

  • 但在这种情况下,这是一个非常无力的论点。它是通过网络传输的 JSON 数据,而不是一些白皮书。 (2认同)