
データのやり取りが欠かせない現代のソフトウェア開発やWebサービスにおいて、「JSON(ジェイソン)」は今や必須の技術となりました。人にもコンピュータにも読み書きしやすいシンプルな構造が特徴で、さまざまなプログラミング言語やシステムで幅広く活用されています。
本記事では、JSONの基本から使い方、注意点、そしてXMLやYAMLとの違いまでを、実際の開発現場ですぐ役立つ視点で解説していきます。
目次
初めてプロジェクト担当者になった方向け
プロが教える「IT基礎知識・用語集」プレゼント
JSONとは
現代のソフトウェア開発やWebサービス、アプリケーションでは、データのやり取りが不可欠です。この分野で標準的に利用されているのが「JSON(JavaScript Object Notation)」です。人にもコンピュータにも扱いやすいテキストベースの形式で、さまざまな開発現場で利用されています。国際的な標準仕様(RFC 8259、ECMA-404、ISO/IEC 21778:2017)で厳密に定められており、今や欠かせない存在となりました。
●定義と特徴
JSONは、「名前と値のペア」や「値のリスト(配列)」でデータを表現する軽量なデータ交換フォーマットです。言語や実行環境を問わず使えるのが大きな特徴で、多くのプログラミング言語で標準サポートされています。テキスト構造なので人間にも読みやすく、機械による解析や生成も容易です。データの識別にはMIMEタイプ「application/json」が使われています。また、RFC 8259の規定により、限定された環境外で交換されるJSONはUTF-8でエンコードされなければならない(MUST)とされています。
●JSONの読み方
日本語では「ジェイソン」と読むのが一般的です。英語圏の開発者でも「ジェイソン」や「ジェイソーン」と発音されることが多いです(/ˈdʒeɪ·sən/)。
JSONの構文とデータ型
JSONはシンプルな構文と、限られた種類のデータ型で構成されています。書き方に厳格なルールがあり、わずかなミスでもパースエラー(構文エラー)となるため注意が必要です。
●基本データ型
JSONで扱えるデータ型は6つだけです。どれも決められた書き方を守る必要があります。
| データ型 | 説明 |
|---|---|
| 数値 | 整数・小数・指数表記が使えます。NaNやInfinityは不可。 |
| 文字列 | ダブルクォーテーションで囲む。Unicode対応。 |
| 真偽値 | true または false の2種類。 |
| 配列 | []で囲んだリスト。カンマ区切り。 |
| オブジェクト | {}で囲んだ「キーと値」のセット。 |
| null | 値が無いことを表す。 |
●書き方のルール
- コメントは書けません(RFC 8259・ECMA-404で仕様上サポートされていません)
- 配列やオブジェクトの最後にカンマを付けてはいけません(トレーリングカンマ禁止)
- オブジェクトのキー(プロパティ名)は必ずダブルクォーテーションで囲む必要があります
- ファイル全体の文字コードはUTF-8でエンコードしなければなりません
JSONとJavaScriptの関係
JSONはもともとJavaScriptの「オブジェクト記法」を元に生まれましたが、現在はJavaScriptに限らず多くの言語やシステムで使われている独立したフォーマットとなりました。
●共通点と違い
JSONとJavaScriptのオブジェクトリテラル表記は非常によく似ていますが、完全に同じではありません。JavaScriptでは省略できるクォーテーションも、JSONでは必ず必要です。また、ECMAScript 2019以降は“JSON superset”の仕様変更により、有効なJSONが有効なJavaScript文字列リテラルとして安全に扱えるようになりました。データの変換はJavaScriptのJSON.parse()やJSON.stringify()で安全に行えます。なお、evalによる変換は非推奨です。
●利用時の注意点
JSONデータの解析(パース)にeval()を使うのは非常に危険です。意図しないコード実行やXSS(クロスサイトスクリプティング)など、深刻なセキュリティリスクにつながります。必ずJSON.parse()など、専用APIや関数を利用してください。また、古いJavaScript環境では、一部のUnicode文字(U+2028、U+2029など)の扱いが異なることがあるため注意しましょう。
JSONの用途
現代のシステム開発では、JSONの活用シーンが広がり続けています。特にWeb API、設定ファイル、データベース領域での採用が多いです。
●APIでの利用
Web APIのリクエストやレスポンス形式としてJSONが事実上の標準です。RESTful APIはもちろん、GraphQLでもレスポンスにはJSONが一般的に使われます。なお、GraphQLのHTTPリクエストはJSONボディで送信する方法が一般的ですが、クエリ本文自体はJSONではなくGraphQL言語です。シンプルな構造により、クライアントとサーバー間で効率よくデータをやり取りできます。
●設定ファイル
アプリケーションや開発ツールの設定ファイルとしてもJSONはよく利用されています。ただし、コメントを記述できないため、注釈や説明が必要な場合はJSON5やJSONC(Visual Studio Codeの設定ファイルなど)が活用されるケースも増えています。
●データベース
- ドキュメント型データベース(例:MongoDB)は、JSON互換のデータ構造(BSON)を採用しています
- リレーショナルデータベースでも、PostgreSQL(json/jsonb型)、MySQL(JSON型)、SQLite(JSON関数)などでJSONのネイティブサポートが進んでいます
これにより、従来の表形式データと柔軟なデータ表現が両立できるようになりました。
JSON Schemaによる検証
JSONデータの品質や安全性を担保する仕組みとして、「JSON Schema」が広く使われています。これはJSONデータが「どのような構造や値を持つべきか」を機械的に検証できる仕組みです。
●JSON Schemaの役割
JSON Schemaでは、データ型や必須項目、値の範囲やパターンなど、詳細な条件を定義できます。APIのバリデーションや自動ドキュメント生成、仕様書作成などさまざまな用途で活用されています。2025年時点での最新ドラフトは「2020-12」です。
●よくある利用シーン
- Web APIのリクエストやレスポンスの検証
- フォーム入力や設定ファイルの構造チェック
- 継続的インテグレーション(CI)での自動テスト
このように、システム開発のあらゆる場面でデータの信頼性と一貫性を高める役割を果たしています。
JSONの安全性と注意点
便利なJSONですが、運用時にはいくつかのリスクや注意点も存在します。安全に使うためには、特にセキュリティ面やデータ精度に気を配ることが重要です。
●セキュリティ上の注意
eval()による実行は、XSS(クロスサイトスクリプティング)や意図しないコード実行の原因となるため、絶対に避けてください- サイズが極端に大きいJSONや、入れ子が深すぎるデータはDoS(サービス妨害)やメモリ枯渇のリスクを高めます
- こうした事態を防ぐため、受け入れるデータのサイズや深さに現実的な制限を設けることが推奨されています。
- パーサーごとの実装差や、仕様違反データへの挙動にも注意が必要です。
●データ精度の注意
- JSONの数値は、ほとんどの実装でIEEE 754倍精度(binary64)で扱われます。非常に大きな数値や小数点以下の誤差などに注意が必要です
- たとえば、
42、42.0、4.2E+1は同じ値として扱われる場合があります - オブジェクト内のキーが重複する場合、RFC 8259は「一意であるべき(SHOULD)」としていますが、実際は多くの実装で最後の値で上書きされます
このような挙動は想定外のバグにつながるため、重複キーは避けることが推奨されます。
JSONと他フォーマットの比較
JSONはXMLやYAMLなど、他の主要なデータフォーマットとよく比較されます。それぞれの特性を知り、用途に合わせて選択することが大切です。
●XMLとの違い
JSONは直感的でコンパクトな記法のため、人間にとっても読みやすいという特徴があります。一方、XMLはタグベースでコメントやスキーマバリデーション、属性、名前空間など多機能ですが、その分冗長になりがちです。データのやり取りにはJSON、厳密な構造や検証が必要な場面ではXMLが選ばれる傾向があります。
●YAMLとの違い
YAMLは「YAML 1.2」以降、JSONの厳密なスーパーセットを目指して設計されています。つまり、JSONファイルはYAMLとしても有効ですが、実際のパーサーやバージョン差によって挙動が異なる場合もあります。YAMLは人が手で編集しやすく、コメントも記述できますが、文脈による曖昧さや実装差もあるため、本番環境での互換性には注意が必要です。対して、JSONは機械処理や相互運用性に優れ、厳密な構文が求められる場面で安心して使えます。
| フォーマット | 構文スタイル | 可読性 | 冗長性 | コメント | スキーマ/検証 | 名前空間 | パースの複雑さ | 主な用途 |
|---|---|---|---|---|---|---|---|---|
| JSON | キーと値のペア | 良好 | 低い | なし | JSON Schema | なし | 低い | API, Web通信 |
| XML | タグベース | やや複雑 | 高い | あり | XSD / DTD | あり | 高い | 文書, エンタープライズ |
| YAML | インデントベース | 非常に高い | 低い | あり | 限定的 | なし | 中程度 | 設定ファイル |
JSONを理解して効率的に活用しよう
ここまで、JSONの基本から構文、データ型、活用方法や注意点まで幅広く解説してきました。JSONはWeb開発やクラウド時代の共通言語です。厳密な構文ルールと専用パーサーの利用、UTF-8でのエンコーディング、データサイズや深さの制限、重複キー回避など、仕様を意識した運用がトラブル回避につながります。API設計やアプリケーション開発、データ保存や連携など、さまざまな現場で役立つ技術なので、自身のプロジェクトに最適な使い方を見つけてみてください。
初めてプロジェクト担当者になった方向け
プロが教える「IT基礎知識・用語集」プレゼント



