JSONの命名に関する標準はありますか?ほとんどの例では、すべて小文字をアンダースコア(lower_case)で区切って使用しています。しかし、あなたはPascalCaseまたはcamelCaseを使うことができますか?
SINGLE規格はありませんが、あなたが言及した3つのスタイル( "Pascal/Microsoft"、 "Java"(camelCase
)、および "C"(アンダースコア、snake_case
))、そして少なくとももう1つ、kebab-case
のようなlonger-name
).
それは主に、問題となっているサービスのバックグラウンド開発者が何を持っていたかに依存しているようです。 c/c ++のバックグラウンド(あるいは多くのスクリプト言語を含む同様の命名を採用している言語、Rubyなど)を持つ人々は、しばしばアンダースコアの変種を選びます。そして同様に休む(Java対.NET)。たとえば、言及されたJacksonライブラリは、Java Beanの命名規則(camelCase
)を想定しています。
更新:私の「標準」の定義はSINGLE規約です。ですから、「はい、たくさんの標準があります」と主張するかもしれませんが、私には複数のNaming Conventions
がありますが、どれも全体として「The」標準ではありません。そのうちの1つは特定のプラットフォームの標準と見なすことができますが、JSONはプラットフォーム間の相互運用性のために使用されているため、あまり意味がない場合もあります。
このドキュメントでは Google JSONスタイルガイド (GoogleでJSON APIを構築するための推奨事項)、
それはそれをお勧めします:
プロパティ名はcamelCased、ASCII文字列でなければなりません。
最初の文字は、英字、アンダースコア(_)、またはドル記号($)でなければなりません。
例:
{
"thisPropertyIsAnIdentifier": "identifier value"
}
私たちのチームはこの規約を使います。
JSON命名規則を課すことは非常に混乱します。しかし、これをコンポーネントに分解すれば簡単に理解できます。
JSONを生成するためのプログラミング言語
JSON自体にはキーの標準的な名前付けはありません
JSONを解析するためのプログラミング言語
Java用の既存のJSONライブラリは、標準の dot.syntax を使用するのではなく、キーにアクセスするためのメソッドのみを使用しているため、 snake_case は依然としてJavaエントリを含むものには意味があります。これは、 dot.syntax を実行できる他のプログラミング言語と比較して、Javaが snake_cased キーにアクセスしてもそれほど問題にならないことを意味します。
Javaのorg.json
packageの例
JsonObject.getString("snake_cased_key")
Javaのcom.google.gson
packageの例
JsonElement.getAsString("snake_cased_key")
JSON実装に適したJSON命名規則を選択することは、テクノロジスタックによって異なります。 snake_case 、 camelCase 、またはその他の命名規則を使用できる場合があります。
考慮すべきもう1つのことは、JSONジェネレーターとJSONパーサーおよび/またはフロントエンドJavaScriptにかけるべき重みです。一般に、JSONパーサー側ではなくJSONジェネレーター側に重点を置く必要があります。これは、ビジネスロジックが通常JSONジェネレータ側にあるためです。
また、JSONパーサー側がわからない場合は、これまでに何ができるかを宣言できます。
特に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の命名規則の間にこの幸せな媒体が見つかるまで、私はこれに少し苦労しました。
すべての規約から他の規約への変換を許可するのに十分なバリエーションがあると思われます。 http://www.cowtowncoder.com/blog/archives/cat_json.html
特に、言及したJackson JSONパーサーはbean_naming
を好みます。
JSONには正式な命名規則はないと思いますが、業界のリーダーの中にはそれがどのように機能しているかを見るために従うことができる人もいます。
世界最大のIT企業の1つであるGoogleには、JSONスタイルガイドがあります。 https://google.github.io/styleguide/jsoncstyleguide.xml
利用すると、Googleが定義している他のスタイルガイドを見つけることができます。 https://github.com/google/styleguide
他の人が言っているように標準はないので、自分で選ぶべきです。その際に考慮すべき点がいくつかあります。
JavaScriptを使用してJSONを消費している場合、両方のプロパティに同じ命名規則を使用すると、視覚的な一貫性が得られ、コードを再利用する機会が生じる可能性があります。
Kebab-caseを回避する小さな理由は、ハイフンが値に現れる-
文字と視覚的に衝突する可能性があることです。
{
"bank-balance": -10
}