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 }
相關文章
相關標籤/搜索