JSON命名是否有标准?我看到大多数示例都使用下划线(lower_case)分隔的所有小写字母。但是,可以使用PascalCase或camelCase吗?
JSON命名是否有标准?我看到大多数示例都使用下划线(lower_case)分隔的所有小写字母。但是,可以使用PascalCase或camelCase吗?
Answers:
目前尚无SINGLE标准,但我看到了您提到的3种样式(“ Pascal / Microsoft”,“ Java”(camelCase
)和“ C”(下划线,snake_case
))以及至少另外一种样式,kebab-case
例如longer-name
)。
这似乎主要取决于所讨论的服务的背景开发人员。具有c / c ++背景(或采用类似命名的语言,包括许多脚本语言,ruby等)的人通常选择下划线变体;其余的都类似(Java与.NET)。例如,提到的Jackson库假定Java bean命名约定(camelCase
)
更新:我对“标准”的定义是一个单一的约定。因此,尽管可以说“是的,但有很多标准”,但对我来说却有很多Naming Conventions
,但总体上没有一个是“ The”标准。其中之一可以被视为特定平台的标准,但是考虑到JSON用于平台之间的互操作性,这可能有意义也可能没有意义。
在本文档中,Google JSON样式指南(关于在Google上构建JSON API的建议),
它建议:
属性名称必须为camelCased ASCII字符串。
第一个字符必须是字母,下划线(_)或美元符号($)。
例:
{
"thisPropertyIsAnIdentifier": "identifier value"
}
我的团队遵循此约定。
Property Name Guidelines->Property Name Format->Choose meaningful property names.
。
有在JSON键没有标准的命名。根据规范的“ 对象”部分:
JSON语法不对用作名称的字符串施加任何限制,...
这意味着camelCase或snake_case应该可以正常工作。
实施JSON命名约定非常令人困惑。但是,如果将其分解为多个组件,则很容易解决。
生成JSON的编程语言
JSON本身没有标准的密钥命名
解析JSON的编程语言
对于具有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_case,camelCase或任何其他命名约定。
要考虑的另一件事是JSON生成器与JSON解析器和/或前端JavaScript的权重。通常,应该将更多的权重放在JSON生成器端,而不是JSON解析器端。这是因为业务逻辑通常位于JSON生成器端。
另外,如果JSON解析器端未知,则可以声明对您有用的内容。
"Person":
不是camelCase :)
对于NodeJS来说,特别是对我而言,如果我正在使用数据库并且字段名用下划线分隔,那么我也将它们用在struct键中。
这是因为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命名约定之间的这种愉快的媒介。
org.json
,gson
。接收snake_case数据不会像这样伤害那么大……JSONObject.get('snake_case_key_here')
似乎有足够的变化,人们竭尽全力允许从所有约定转换为其他约定:http : //www.cowtowncoder.com/blog/archives/cat_json.html
值得注意的是,提到的Jackson JSON解析器更喜欢bean_naming
。
beanNaming
。
我认为JSON没有正式的命名约定,但是您可以跟随一些行业领导者来看看它是如何工作的。
Google是世界上最大的IT公司之一,拥有JSON样式指南:https : //google.github.io/styleguide/jsoncstyleguide.xml
利用这些优势,您可以在此处找到Google定义的其他样式指南:https://github.com/google/styleguide