3 回答

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊
在本文檔《Google JSON樣式指南》(關(guān)于在Google上構(gòu)建JSON API的建議)中,
它建議:
屬性名稱必須為camelCased ASCII字符串。
第一個字符必須是字母,下劃線(_)或美元符號($)。
例:
{
"thisPropertyIsAnIdentifier": "identifier value"
}
我的團(tuán)隊(duì)遵循此約定。

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個贊
前提
有在JSON鍵沒有標(biāo)準(zhǔn)的命名。
驅(qū)動因素
實(shí)施JSON命名約定非常令人困惑。但是,如果將其分解為多個組件,則很容易解決。
生成JSON的編程語言
Python-snake_case
PHP-snake_case
Java-camelCase
JavaScript-camelCase
JSON本身沒有標(biāo)準(zhǔn)的密鑰命名
解析JSON的編程語言
Python-snake_case
PHP-snake_case
Java-camelCase
JavaScript-camelCase
混合搭配成分
Python ?JSON? Python - snake_case-一致
Python ?JSON? PHP - snake_case-一致
Python ?JSON? Java - snake_case-請參閱下面的Java問題
Python ?JSON? JavaScript - snake_case將很有意義;無論如何都要擰緊前端
Python ?JSON?您不知道-snake_case會有意義;反正擰緊解析器
PHP ?JSON? Python - snake_case-一致
PHP ?JSON? PHP - snake_case-一致
PHP ?JSON? Java - snake_case-請參閱下面的Java問題
PHP ?JSON? JavaScript - snake_case很有意義;無論如何都要擰緊前端
PHP ?JSON?您不知道-snake_case會有意義;反正擰緊解析器
Java ?JSON? Python - snake_case-請參閱下面的Java問題
Java ?JSON? PHP - snake_case-請參閱下面的Java問題
Java ?JSON? Java - camelCase
Java ?JSON? JavaScript - camelCase
Java ?JSON?您不知道-camelCase會有意義;反正擰緊解析器
JavaScript ?JSON? Python - snake_case很有意義;無論如何都要擰緊前端
JavaScript ?JSON? PHP - snake_case很有意義;無論如何都要擰緊前端
JavaScript ?JSON? Java - camelCase-一致
JavaScript ?JSON? JavaScript - camelCase-一致
Java問題
對于具有Java條目的人來說,snake_case仍然有意義,因?yàn)镴ava的現(xiàn)有JSON庫僅使用訪問密鑰的方法,而不是使用標(biāo)準(zhǔn)的dot.syntax。這意味著與其他可以執(zhí)行dot.syntax的編程語言相比,Java訪問snake_cased鍵不會有多大傷害。
Java 包示例org.json
JsonObject.getString("snake_cased_key")
Java 包示例com.google.gson
JsonElement.getAsString("snake_cased_key")
一些實(shí)際的實(shí)現(xiàn)
Google Maps JavaScript API - camelCased
Facebook JavaScript API - snake_cased
亞馬遜網(wǎng)絡(luò)服務(wù) - snake_cased與駝峰格式
Twitter API - snake_cased
JSON-LD - camelCased和ProperCamelCased
結(jié)論
為JSON實(shí)現(xiàn)選擇正確的JSON命名約定取決于您的技術(shù)堆棧。在某些情況下,可以使用snake_case,camelCase或任何其他命名約定。
要考慮的另一件事是JSON生成器與JSON解析器和/或前端JavaScript的權(quán)重。通常,應(yīng)該將更多的權(quán)重放在JSON生成器端,而不是JSON解析器端。這是因?yàn)闃I(yè)務(wù)邏輯通常位于JSON生成器端。
另外,如果JSON解析器端未知,則可以聲明對您有用的內(nèi)容。
- 3 回答
- 0 關(guān)注
- 2321 瀏覽
添加回答
舉報