WebサービスのAPIから返ってくるデータや、設定ファイルの中身を見ると、ほぼ必ず「JSON」という形式に出会います。プログラミング言語を問わず広く使われているデータ形式ですが、改めて「JSONとは何か」「なぜこの形式が標準的に使われているのか」を整理してみると、見やすく整形する必要性も含めて理解しやすくなります。
1. JSONとは何か
JSON(JavaScript Object Notation)は、データを構造化して表現するためのテキスト形式です。名前にJavaScriptと入っていますが、現在はプログラミング言語を問わず使われる、データのやり取りのための共通フォーマットになっています。
見た目はシンプルなテキストですが、{ }や[ ]といった記号を使って「データの構造(階層)」を表現できるのが特徴です。
2. 基本構文:オブジェクトと配列
JSONの構造は、大きく分けて「オブジェクト」と「配列」の2種類で組み立てられています。
- •オブジェクト { }:「キー: 値」の組み合わせをまとめたもの。例:{"name": "taro", "age": 20}
- •配列 [ ]:値を順番に並べたもの。例:["apple", "banana", "orange"]
オブジェクトの中に配列を入れたり、配列の中にオブジェクトを並べたりと、入れ子にして組み合わせることで、複雑な情報も表現できます。
3. JSONで使える値の型
JSONのキーに対応する「値」として使える型はあらかじめ決まっています。
| 型 | 例 | 備考 |
|---|---|---|
| 文字列 | "taro" | 必ずダブルクォートで囲む |
| 数値 | 20、3.14 | クォートは不要 |
| 真偽値 | true、false | 小文字で記述 |
| null | null | 値が存在しないことを表す |
| オブジェクト | {"key": "value"} | 入れ子にできる |
| 配列 | [1, 2, 3] | 入れ子にできる |
4. なぜAPIやWeb開発で標準的に使われているのか
JSONが広く使われている理由は、「特定の言語に依存しない」かつ「人間が見てもある程度読める」という2つの性質を両立しているためです。JavaScript・Python・Java・Goなど、ほとんどの言語にJSONを読み書きするための標準的な仕組みが用意されており、サーバーとアプリ、あるいは異なる言語で書かれたシステム同士でデータをやり取りする際の「共通言語」として機能します。
XMLのようにタグで囲む形式と比べて記述量が少なく、構造もシンプルなため、APIのレスポンスや設定ファイル、ログの出力形式としても定番になっています。
5. 「整形」と「圧縮」の違い
JSONは改行やスペースを入れても入れなくても、データとしての意味は変わりません。この性質を利用して、目的に応じて見た目を変えることがよくあります。
| 種類 | 内容 | 使う場面 |
|---|---|---|
| 整形(インデント) | 改行・スペースを入れて階層を見やすくする | 人間がコードやレスポンスの内容を確認するとき |
| 圧縮(minify) | 改行・スペースを極力削って1行にまとめる | 通信量やファイルサイズを減らしたいとき |
開発中はインデントを入れて整形した状態で構造を確認し、実際に通信するときは圧縮してデータ量を減らす、という使い分けが一般的です。JSON整形ツールでは、ぐちゃぐちゃになったJSON文字列を整形したり、逆に圧縮したりを切り替えて確認できます。
6. よくあるJSONエラー
JSONは構文のルールが厳密なため、人間が手で書くと細かいミスでエラーになりがちです。代表的なものを挙げます。
- •カンマの付け忘れ:複数の項目を並べる際、区切りのカンマが1つ抜けているだけでエラーになる
- •末尾の余分なカンマ:配列やオブジェクトの最後の要素の後にカンマを付けてしまう(JSONでは許可されていない)
- •ダブルクォート忘れ:キーや文字列の値をクォートなしで書いてしまう
- •シングルクォートの使用:JSONでは文字列はダブルクォートのみが正式な記法で、シングルクォートは使えない
こうしたエラーは見た目では気づきにくいことが多いため、JSON整形ツールのようにエラー箇所を指摘してくれる仕組みを使うと、原因を素早く特定できます。
7. JSONとXML・YAMLとの違い
データを構造化して表現する形式には、JSON以外にもXMLやYAMLがあります。XMLはタグで要素を囲む形式で、Webの初期から使われてきましたが、JSONと比べると記述量が多くなりがちです。YAMLはインデント(字下げ)で階層を表現する形式で、設定ファイルなどで好まれる傾向があり、JSONよりさらに記号が少なく人間にとって読みやすいとされています。
現在のWeb API通信ではJSONが主流ですが、設定ファイルではYAMLが使われることも多く、古いシステムやSOAP通信ではXMLが使われ続けています。どの形式も「データを構造化して表す」という目的は同じで、用途や慣習によって使い分けられています。
8. JavaScriptオブジェクトとJSONは同じではない
JSONはJavaScriptの記法から生まれた形式ですが、JavaScriptのオブジェクトリテラルと完全に同じルールではありません。JavaScriptではキーをクォートなしで書けたり、関数やundefinedを値に持てたり、コメントを書けたりしますが、JSONではこれらはすべて許されていません。キーは必ずダブルクォートで囲む必要があり、値として使えるのは前述の6種類の型だけで、コメントを書くとエラーになります。JavaScriptのコードをそのままJSONとして扱おうとして構文エラーになる、というつまずきは初心者によくあるパターンです。
9. 大きなJSONを扱う際の注意点
APIのレスポンスや設定ファイルが数千行を超えるような大きなJSONになると、どこで階層がずれているか目視では追いにくくなります。エディタの折りたたみ機能で階層ごとに開閉したり、整形ツールでインデントを揃えたりすることで見通しが良くなります。また、数値の桁数が大きすぎるとJavaScriptの数値型で誤差が出ることがあるため、IDのような桁数の大きい値は数値ではなく文字列として扱う設計も広く採用されています。
まとめ
JSONは、オブジェクトと配列という2つのシンプルな構造を組み合わせることで、言語を問わずデータをやり取りできる形式です。整形と圧縮を使い分けることで、人間が読みやすい状態と通信に適した状態を切り替えられます。エラーが出て読みにくいJSONに出会ったときは、JSON整形ツールで整えてみてください。