JSON命名约定

有没有关于JSON命名的标准? 我看到大多数使用小写(lower_case)分隔的小写字母的例子。 但是,你可以使用PascalCase还是camelCase?

没有单一的标准,但我已经看到你提到的3种风格(“Pascal / Microsoft”,“Java”( camelCase )和“C”(下划线, snake_case ))以及至less一个以上的snake_case kebab-caselonger-name )。

它似乎主要取决于有关服务的背景开发人员, 那些具有c / c ++背景的语言(或采用类似命名的语言,包括许多脚本语言,ruby等)通常select下划线变体; 并类似地rest(Java vs .NET)。 例如,被提及的Jackson库假定Java bean命名约定( camelCase

更新:我的“标准”的定义是一个单一的惯例。 所以虽然可以声称“是的,有很多标准”,但是对于我来说,有多个Naming Conventions ,其中没有一个是整体的“标准”。 其中之一可以被认为是特定平台的标准,但是鉴于JSON被用于平台之间的互操作性,可能或不太合理。

在本文档“ Google JSON样式指南” (关于在Google中构buildJSON API的build议),

它build议:

  1. 属性名称必须是camelCased ,ASCIIstring。

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

例:

 { "thisPropertyIsAnIdentifier": "identifier value" } 

我们的团队使用这个约定。

前提

JSON中没有标准的键名

推动因素

是的,做出JSON命名约定的决定是非常混乱的。 但是,如果将其分解为组件,则可以很容易地计算出来。

  1. 用于生成JSON的编程语言

    • PHP – snake_case
    • Java – camelCase,ProperCamelCase
    • JavaScript – camelCase
    • 帮助通过评论完成此列表
  2. JSON本身没有标准的密钥命名

  3. 用于parsingJSON的编程语言

    • PHP – snake_case
    • Java – camelCase,ProperCamelCase
    • JavaScript – camelCase
    • 帮助通过评论完成此列表

混合匹配组件

  1. PHP »JSON» Java – ?
  2. PHP »JSON» JavaScript – ?
  3. PHP »JSON» PHPsnake_case
  4. PHP »JSON» 任何 – ?
  5. Java »JSON» JavacamelCase
  6. Java »JSON» JavaScriptcamelCase
  7. Java »JSON» PHP – ?
  8. Java »JSON» 任何 – ?
  9. JavaScript »JSON» JavacamelCase
  10. JavaScript »JSON» JavaScriptcamelCase
  11. JavaScript »JSON» PHP – ?
  12. JavaScript »JSON» 任何 – ?

– 你可以使用任何命名约定

一些实际的实现

  • Google Maps JavaScript API – camelCased
  • Facebook的JavaScript API – snake_cased
  • amazon web services – snake_casedcamelCased
  • Twitter API – snake_cased
  • JSON-LD – camelCasedProperCamelCased

为您的JSON实现select正确的JSON命名约定取决于您的技术堆栈。 有些情况下可以使用snake_casecamelCase或其他命名约定。

值得注意的是我在NodeJS上,如果我正在使用数据库,并且我的字段名被下划分开,我也在结构键中使用它们。

这是因为db字段有很多首字母缩略词/缩写,所以像appSNSInterfaceRRTest看起来有点乱,但是app_sns_interface_rr_test更好。

在Javascriptvariables中,所有的camelCase和类名(构造函数)都是ProperCase,所以你会看到类似的东西

 var devTask = { task_id: 120, store_id: 2118, task_name: 'generalLedger' }; 

要么

 generalLedgerTask = new GeneralLedgerTask( devTask ); 

当然,在JSON键/string包在双引号,但是你只是使用JSON.stringify和传入JS对象,所以不必担心。

我一直努力,直到我发现JSON和JS命名约定之间的这个快乐的媒介。

似乎有足够的变化,人们走出自己的方式,允许从所有约定转换为其他人: http : //www.cowtowncoder.com/blog/archives/cat_json.html

值得注意的是,所提到的Jackson JSONparsing器更喜欢bean_naming

我认为JSON并没有一个正式的命名规范,但是你可以跟随一些行业领导来看看它是如何工作的。

Google是世界上最大的IT公司之一,拥有JSON风格指南: https : //google.github.io/styleguide/jsoncstyleguide.xml

利用,你可以find其他的风格指南,谷歌定义,在这里: https : //github.com/google/styleguide