JSON Arrayの解説
JSON arrayの構文、ネスト、混合型、一般的なパターンを理解しましょう。JSONデータ構造における順序付きの値のコレクションの操作方法を解説します。
詳細な説明
JSON arrayとは、角括弧 [] で囲まれたゼロ個以上の値の順序付きシーケンスです。要素はカンマで区切られ、各要素は任意の有効なJSON型(string、number、boolean、null、object、または別のarray)が可能です。arrayは挿入順序を保持するため、位置が重要なリスト、シーケンス、コレクションに適しています。
基本構文:
["apple", "banana", "cherry"]
[1, 2, 3, 4, 5]
[true, false, true]
[{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]
混合型array:
JSONでは異なる型の要素を含むarrayが許可されています:
[1, "hello", true, null, {"key": "value"}, [1, 2, 3]]
これは構文的に有効ですが、単一のarray内で型を混在させることは実際には推奨されません。静的型付け言語でのデータ処理が困難になり、JSON Schemaでのバリデーションも難しくなるためです。よく設計されたAPIは、すべての要素が同じ構造を共有する同種のarrayを使用します。
空のarray vs. null:
空のarray [] は「コレクションは存在するが、現在アイテムがない」ことを意味します。これは「コレクション自体が存在しない」ことを意味する null とは意味が異なります。例えば、{"tags": []} はアイテムは処理されたがタグが付与されなかったことを意味し、{"tags": null} はタグがまだ評価されていない可能性を示します。意図的に使い分け、慣例をドキュメント化してください。
ネストされたarray:
arrayは他のarrayを含むことができ、多次元構造を作ります:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
このパターンは行列、グリッドデータ、グループ化されたコレクションに有用です。ただし、深くネストされたarrayはナビゲートやパースが困難になります。2〜3レベル以上のネストが必要な場合は、名前付きobjectで再構造化することを検討してください。
開発者がよくやるミス:
よくあるミスは、最後の要素の後に末尾カンマを追加することです: [1, 2, 3,]。これはJavaScriptでは有効ですがJSONでは無効です。もうひとつのミスは、データのモデリング時にarrayとobjectを混同することです。arrayは順序付きのインデックスベースのコレクションに、objectは名前付きのキー付きプロパティに使用してください。また、順序が重要でない場合にarrayを使用すると、利用側が暗黙の順序に依存する場合に問題が生じます。さらに、非常に大きなarray(数万要素)は一部のパーサーでパフォーマンスの問題を引き起こす可能性があり、APIレスポンスではページネーションすべきです。
ベストプラクティス:
arrayの要素を同種(同じ型と構造)に保ちましょう。説明的な親キー("items"、"results"、"users")を汎用的な名前の代わりに使用してください。大きなコレクションの場合は、単一のarrayにすべてを返すのではなくページネーションを実装しましょう。JSON Schemaの items キーワードを使用してarrayの内容を検証し、要素の型を強制してください。
ユースケース
REST APIレスポンスでページネーションされた検索結果のリストを返す。arrayの各要素がid、title、scoreなどの一貫したフィールドを持つobjectとなる。