JSON命名の標準はありますか?アンダースコア(lower_case)で区切られたすべての小文字を使用したほとんどの例が表示されます。しかし、PascalCaseまたはcamelCaseを使用できますか?
JSON命名の標準はありますか?アンダースコア(lower_case)で区切られたすべての小文字を使用したほとんどの例が表示されます。しかし、PascalCaseまたはcamelCaseを使用できますか?
回答:
SINGLE標準はありませんが、あなたが言及する3つのスタイル( "Pascal / Microsoft"、 "Java"(camelCase
)と「C」(アンダースコア、snake_case
ならびに少なくとも1以上を、 - ))kebab-case
のようなlonger-name
)。
これは主に、問題のサービスの開発者のバックグラウンドに依存しているようです。c / c ++のバックグラウンド(または多くのスクリプト言語、ルビなどを含む同様の命名法を採用している言語)を使用している人は、アンダースコアバリアントを選択することがよくあります。同様に残ります(Java対.NET)。たとえば、言及されたジャクソンライブラリは、Java Beanの命名規則(camelCase
)
更新:「標準」の私の定義は、単一の規則です。したがって、「はい、多くの標準があります」と主張することもできますが、私には複数のがありNaming Conventions
、どれも「The」標準ではありません。それらの1つは特定のプラットフォームの標準と見なすことができますが、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の既存のJSONライブラリは、標準のdot.syntaxを使用するのではなく、メソッドにのみアクセスしてキーにアクセスするため、snake_caseはJavaエントリを使用するユーザーにとっても意味があります。つまり、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、またはその他の命名規則を使用できる場合があります。
考慮すべきもう1つのことは、JSONジェネレーターとJSONパーサーまたはフロントエンドJavaScript、あるいはその両方にかかる重みです。一般に、JSONパーサー側ではなく、JSONジェネレーター側により多くの重みを設定する必要があります。これは、ビジネスロジックが通常JSONジェネレーター側に存在するためです。
また、JSONパーサー側が不明な場合は、何が機能するかを宣言できます。
"Person":
is n't camelCase :)
特に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の命名規則の間のこの幸せな媒体を見つけるまで、私はこれに少し苦労しました。
org.json
、Javaの解析に外部パッケージのみを使用しますgson
。snake_caseデータを受信してもそれほど問題はありません...JSONObject.get('snake_case_key_here')
すべての規則から他の規則への変換を可能にするために人々が邪魔するほど十分なバリエーションがあるようです:http : //www.cowtowncoder.com/blog/archives/cat_json.html
特に、前述のJackson JSONパーサーはを優先しbean_naming
ます。
beanNaming
ます。
JSONの正式な命名規則はないと思いますが、いくつかの業界リーダーをフォローして、JSONがどのように機能しているかを確認できます。
世界最大のIT企業の1つであるGoogleには、JSONスタイルガイドがあります。https://google.github.io/styleguide/jsoncstyleguide.xml
Googleが定義している他のスタイルガイドは、https://github.com/google/styleguideから入手できます。