JSON命名是否有标准? 我看到大多数使用由下划线(lower_case)分隔的小写的示例。 但是,你可以使用PascalCase或camelCase吗?
#1楼
在本文档中, Google JSON样式指南 (在Google上构建JSON API的建议),
它建议:
属性名称必须是camelCased ,ASCII字符串。
第一个字符必须是字母,下划线(_)或美元符号($)。
例:
{
"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的编程语言
- Python - snake_case
- PHP - snake_case
- Java - camelCase
- JavaScript - camelCase
JSON本身没有标准的密钥命名
用于解析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» PHP - 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仍然有意义,因为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")
一些实际的实现
- Google Maps JavaScript API - camelCased
- Facebook JavaScript API - snake_cased
- 亚马逊网络服务 - snake_cased和camelCased
- Twitter API - snake_cased
- JSON-LD - camelCased & ProperCamelCased
结论
为JSON实现选择正确的JSON命名约定取决于您的技术堆栈。 有些情况下可以使用snake_case , camelCase或任何其他命名约定。
另一件需要考虑的事情是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楼
正如其他人所说,没有标准,所以你应该自己选择一个。 这样做时需要考虑以下几点:
如果您使用JavaScript来使用JSON,那么对两者中的属性使用相同的命名约定将提供视觉一致性,并且可能有一些机会来重新使用更清晰的代码。
避免烤肉串的一个小理由是连字符可能会在视觉上与
-
出现在值中的字符发生冲突。{ "bank-balance": -10 }
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3194743