JSON命名约定[关闭]

*爱你&永不变心* 提交于 2020-03-14 12:13:56

JSON命名是否有标准? 我看到大多数使用由下划线(lower_case)分隔的小写的示例。 但是,你可以使用PascalCase或camelCase吗?


#1楼

在本文档中, Google JSON样式指南 (在Google上构建JSON API的建议),

它建议:

  1. 属性名称必须是camelCased ,ASCII字符串。

  2. 第一个字符必须是字母,下划线(_)或美元符号($)。

例:

{
  "thisPropertyIsAnIdentifier": "identifier value"
}

我们的团队使用此惯例。


#2楼

特别是对于我在NodeJS上,如果我正在使用数据库并且我的字段名称是下划线分隔,我也在结构键中使用它们。

这是因为db字段有很多首字母缩略词/缩写,所以像appSNSInterfaceRRTest看起来有点乱,但app_sns_interface_rr_test更好。

在Javascript变量中,所有camelCase和类名(构造函数)都是ProperCase,所以你会看到像

var devTask = {
        task_id: 120,
        store_id: 2118,
        task_name: 'generalLedger'
    };

要么

generalLedgerTask = new GeneralLedgerTask( devTask );

当然,在JSON键/字符串中用双引号括起来,但是你只需使用JSON.stringify并传入JS对象,所以不必担心。

我一直在努力解决这个问题,直到我在JSON和JS命名约定之间找到了这个愉快的媒介。


#3楼

前提

JSON中没有标准的键命名

驱动因素

强加JSON命名约定非常令人困惑。 但是,如果将其分解为组件,可以很容易地理解这一点。

  1. 用于生成JSON的编程语言

    • Python - snake_case
    • PHP - snake_case
    • Java - camelCase
    • JavaScript - camelCase
  2. JSON本身没有标准的密钥命名

  3. 用于解析JSON的编程语言

    • Python - snake_case
    • PHP - snake_case
    • Java - camelCase
    • JavaScript - camelCase

混合匹配组件

  1. Python »JSON» Python - snake_case - 一致
  2. Python »JSON» PHP - snake_case - 一致
  3. Python »JSON» Java - snake_case - 请参阅下面的Java问题
  4. Python »JSON» JavaScript - snake_case会有意义; 无论如何拧紧前端
  5. Python »JSON»你不知道 - snake_case会有意义; 无论如何拧紧解析器
  6. PHP »JSON» Python - snake_case - 一致
  7. PHP »JSON» PHP - snake_case - 一致
  8. PHP »JSON» Java - snake_case - 请参阅下面的Java问题
  9. PHP »JSON» JavaScript - snake_case会有意义; 无论如何拧紧前端
  10. PHP »JSON» PHP - snake_case
  11. PHP »JSON»你不知道 - snake_case会有意义; 无论如何拧紧解析器
  12. Java »JSON» Python - snake_case - 请参阅下面的Java问题
  13. Java »JSON» PHP - snake_case - 请参阅下面的Java问题
  14. Java »JSON» Java - camelCase
  15. Java »JSON» JavaScript - camelCase
  16. Java »JSON»你不知道 - camelCase会有意义; 无论如何拧紧解析器
  17. JavaScript »JSON» Python - snake_case会有意义; 无论如何拧紧前端
  18. JavaScript »JSON» PHP - snake_case会有意义; 无论如何拧紧前端
  19. JavaScript »JSON» Java - camelCase - 一致
  20. JavaScript »JSON» JavaScript - camelCase - 一致

Java问题

对于那些使用Java条目的人来说, snake_case仍然有意义,因为Java的现有JSON库只使用方法来访问密钥,而不是使用标准的dot.syntax 。 这意味着与其他可以执行dot.syntax的编程语言相比,Java访问snake_cased键不会造成太大的伤害。

Java的 org.json 示例

JsonObject.getString("snake_cased_key")

Java的 com.google.gson 示例

JsonElement.getAsString("snake_cased_key")

一些实际的实现

结论

为JSON实现选择正确的JSON命名约定取决于您的技术堆栈。 有些情况下可以使用snake_casecamelCase或任何其他命名约定。

另一件需要考虑的事情是JSON生成器与JSON解析器和/或前端JavaScript的权重。 通常,应该在JSON生成器端而不是JSON-parser端放置更多权重。 这是因为业务逻辑通常驻留在JSON生成器端。

此外,如果JSON-parser端未知,那么您可以声明什么可以为您工作。


#4楼

我认为JSON没有正式的命名约定,但你可以跟随一些行业领导者看看它是如何工作的。

Google是全球最大的IT公司之一,拥有JSON风格指南: https//google.github.io/styleguide/jsoncstyleguide.xml

利用此功能,您可以在此处找到Google定义的其他样式指南: https//github.com/google/styleguide


#5楼

正如其他人所说,没有标准,所以你应该自己选择一个。 这样做时需要考虑以下几点:

  1. 如果您使用JavaScript来使用JSON,那么对两者中的属性使用相同的命名约定将提供视觉一致性,并且可能有一些机会来重新使用更清晰的代码。

  2. 避免烤肉串的一个小理由是连字符可能会在视觉上与-出现在值中的字符发生冲突。

    { "bank-balance": -10 }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!