※本ページにはプロモーション(広告)が含まれています
軽量なデータ交換フォーマット。キーと値のペアで構造化データを表現し、ほぼ全プログラミング言語で扱えるWeb APIの標準形式。
詳しい解説
JSONは「JavaScript Object Notation」の略で、テキストで構造化データを表現する軽量なデータ交換フォーマットです。元々JavaScriptのオブジェクトリテラル構文から派生しましたが、現在ではJavaScriptとは独立した言語非依存の標準となっており、あらゆるプログラミング言語でライブラリが提供されています。
構文はシンプルで、キーと値のペアを `{}` で囲み、配列は `[]`、文字列は `""` で表します。型は文字列・数値・真偽値(true/false)・null・オブジェクト({})・配列([])の6種類しかなく、学習コストが低いのが特徴です。
REST APIのリクエスト/レスポンス、設定ファイル(.json)、ログ出力、データベース(MongoDB等のドキュメントDB)の保存形式、JavaScriptの `package.json` など、現代のWeb開発でJSONを見ない日はありません。XMLと比較して冗長性が低く、可読性と機械処理のバランスに優れている点が広く採用される理由です。
JavaScriptでは `JSON.parse()` で文字列からオブジェクトへ、`JSON.stringify()` で逆変換ができます。Pythonの `json.loads()` / `json.dumps()`、各言語で同等のAPIが提供されています。
注意点として、JSONにはコメントが書けない(RFC 8259準拠)、末尾カンマ不可、キーはダブルクォート必須といった厳密なルールがあります。これを緩和したJSONC(JSON with Comments)やJSON5、より型定義を厳密にしたJSON Schemaなど、派生規格も複数存在します。
セキュリティ面では、信頼できないJSONを `eval()` で読まない、JSON Hijacking対策といった基本的な注意が必要です。
天気APIがJSONで `{"city":"tokyo","temperature":23,"weather":["sunny","cloudy"]}` を返したとします。アプリ側はこれをパースして `obj.temperature` で気温を取り出し、`obj.weather[0]` で天気情報を取得します。XMLのようなタグの冗長さがなく、ファイルサイズも小さいため、モバイル回線でも通信コストを抑えられます。Web APIのほぼ全てがJSONを採用しているのはこのためです。
別の呼び方
JavaScript Object Notation
JSON形式
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!