JSONとは — 構文・データ型・よくあるエラーと整形/検証のコツ

JSON(JavaScript Object Notation)は、データをテキストで表現するための軽量なデータ交換フォーマットです。名前のとおり JavaScript のオブジェクト記法に由来しますが、いまでは特定の言語に依存しない標準(RFC 8259 / ECMA-404)として、Web API・設定ファイル・ログなど幅広く使われています。本記事では JSON のデータ型と構文ルール、つまずきやすいエラー、そして整形・検証のコツを実例とともに整理します。

JSON の文法は非常にシンプルですが、「これは許されない」というルールが厳格です。本記事のエラー一覧(第4章)を押さえておくと、実務でのトラブルがぐっと減ります。

1. JSONとは何か

JSON は、構造化されたデータを人にも機械にも読める文字列として表現する形式です。もともと JavaScript のオブジェクト記法をベースに考案されましたが、構文がシンプルで多くの言語に標準ライブラリが用意されているため、サーバとブラウザの通信(Web API)をはじめとするデータ交換のデファクトスタンダードになりました。

JSON の本体は単なるテキストです。ファイル拡張子は .json、HTTP では application/json という MIME タイプでやり取りされます。文字コードは UTF-8 を使うのが基本です。

2. JSONの6つのデータ型

JSON で表現できる値(value)は、次の6種類です。これらを入れ子にして任意の構造を作ります。

データ型説明
オブジェクトキーと値のペアの集合。波かっこ { } で囲む。キーは必ず文字列。{"name":"Taro","age":30}
配列値を順番に並べたもの。角かっこ [ ] で囲む。要素の型は混在可。[1,"a",true]
文字列ダブルクオートで囲んだ文字の並び。\n\" などのエスケープが使える。"hello"
数値整数・小数・指数表記。10進数のみ。先頭ゼロや + 符号は不可。42 / -3.14 / 1e3
真偽値論理値。すべて小文字で書く。true / false
null値が存在しないことを表す。小文字で nullnull

たとえば {"user":{"name":"Taro","tags":["admin",null],"active":true}} のように、オブジェクトと配列を組み合わせて階層的なデータを表せます。

3. 構文ルールの基本

JSON は許容される書き方が厳密に決まっています。とくに重要なのは次の点です。

これらは JavaScript のオブジェクトリテラルでは緩く許される書き方も多いため、混同しないよう注意してください。JSON はあくまで独立したデータ仕様です。

4. よくあるエラー

パースに失敗する代表的なパターンを表にまとめます。エラーに遭遇したら、まずこのあたりを疑ってください。

原因不正な例正しい書き方
末尾カンマ{"a":1,"b":2,}{"a":1,"b":2}
シングルクオート{'a':'x'}{"a":"x"}
キーが未クオート{a:1}{"a":1}
全角スペース・全角記号{"a":1}(全角コロン){"a":1}(半角コロン)
BOM(先頭の不可視バイト)ファイル先頭に U+FEFFBOM なしの UTF-8 で保存
NaN / Infinity{"x":NaN}{"x":null} 等で表現
コメント混入{"a":1} // メモコメントを削除する
とくに見落としがちなのが全角スペースや全角コロンです。日本語入力のまま記号を打ってしまうと、見た目はほぼ同じでもパースエラーになります。また BOM はエディタ上では見えないため、原因不明のエラーに遭遇したら文字コード(BOM の有無)を確認しましょう。

5. 整形(Pretty)と最小化(Minify)

同じ JSON データでも、空白や改行の入れ方によって見た目が変わります。代表的な2つの処理が整形(Pretty Print)最小化(Minify)です。

整形と最小化は見た目を変えるだけで、表すデータの意味は同一です。人が読むときは整形、機械が転送・保存するときは最小化、と用途で切り替えれば問題ありません。

6. バリデーション(検証)の考え方

JSON の検証には、段階の異なる2つの観点があります。

まずは構文が正しいかをツールで確認し、業務データとして使うならスキーマ検証まで行うと安全です。手元で素早く確認したいときは、下記のオンラインツールが便利です。

Free Tool JSON整形・検証ツールで確かめる 貼り付けるだけで JSON を整形(Pretty)/最小化(Minify)し、構文エラーの箇所を表示します。ブラウザ内で完結し、データは送信されません。

よくある質問(FAQ)

JSONでコメントは書けますか?

標準のJSON(RFC 8259)にはコメントの構文がありません。// や /* */ を書くとパースエラーになります。設定ファイルなどでコメントを使いたい場合は、JSON5 や JSONC といった拡張仕様、または別フィールドに説明文字列を持たせる方法を検討してください。データ交換用にはコメントを含めないのが原則です。

末尾カンマがエラーになるのはなぜですか?

JSONの文法では、配列やオブジェクトの最後の要素のあとにカンマを置くことが許されていないためです。{"a":1,} や [1,2,] は不正です。JavaScriptのオブジェクトリテラルでは末尾カンマが許されるため混同しがちですが、JSONは別仕様なので末尾のカンマは必ず削除してください。

整形(Pretty)と最小化(Minify)はどう使い分けますか?

整形はインデントと改行を加えて人が読みやすくする処理で、レビューやデバッグ、設定ファイルの保存に向きます。最小化は空白や改行を取り除いてサイズを最小にする処理で、APIのレスポンスや通信・保存の効率化に向きます。どちらも表すデータの意味は同じなので、用途に応じて切り替えれば問題ありません。

← 技術ブログ一覧へ戻る