JSON命名约定[关闭]

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


#1楼

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

它建议: 前端

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

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

例: github

{
  "thisPropertyIsAnIdentifier": "identifier value"
}

咱们的团队使用此惯例。 数据库


#2楼

特别是对于我在NodeJS上,若是我正在使用数据库而且个人字段名称是下划线分隔,我也在结构键中使用它们。 编程

这是由于db字段有不少首字母缩略词/缩写,因此像appSNSInterfaceRRTest看起来有点乱,但app_sns_interface_rr_test更好。 json

在Javascript变量中,全部camelCase和类名(构造函数)都是ProperCase,因此你会看到像 api

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 }
相关文章
相关标签/搜索