本サイトは広告(アフィリエイトリンク・Google AdSense)を含みます。

JSONの書き方とよくあるエラーの直し方

JSON の規則は6種類の値と引用符、カンマの使い方だけです。末尾カンマ、シングルクォート、コメント、先頭ゼロの数値、BOM など、構文エラーになる典型的な書き方と直し方を、エラーメッセージの読み方とあわせて説明します。

JSON の最低限の規則

JSON は、設定ファイルや API の応答で使われるデータの書き方で、規則は RFC 8259 に定められています。覚えることは多くありません。値は、文字列、数値、真偽値(true / false)、null、配列([ ])、オブジェクト({ })の6種類だけです。オブジェクトのキーは必ず二重引用符で囲んだ文字列で、キーと値はコロンで、要素同士はカンマで区切ります。

{
  "name": "山田 太郎",
  "age": 42,
  "active": true,
  "tags": ["web", "security"],
  "address": null
}

空白と改行は自由で、1行に詰めても、インデントを付けても同じ意味です。人が読むときは整形し、送るときは圧縮します。この整形と圧縮、そして規則どおりに書けているかの検証は、JSON整形・圧縮・検証でまとめてできます。

末尾カンマ

最も多いエラーです。JavaScript や Python では配列やオブジェクトの最後の要素の後ろにカンマがあっても許されますが、JSON では構文エラーになります。

{"a": 1, "b": 2,}   <- 誤り
{"a": 1, "b": 2}    <- 正しい

要素を手で削除したり、順番を入れ替えたりした後に残りやすいので、編集後は検証を通してください。エラーメッセージは「Unexpected token }」のように、カンマの位置ではなく次の文字の位置を指すことがあります。

シングルクォート

JSON の文字列は二重引用符(")だけです。シングルクォート(')で囲むと、JavaScript のオブジェクトとしては正しくても、JSON としてはエラーになります。キーも同様で、{name: "x"} のように引用符を省いたキーは許されません。

文字列の中に二重引用符を入れたいときは \" とエスケープします。バックスラッシュ自体は \\、改行は \n です。Windows のパスを "C:\Users\..." と書くと \U が不正なエスケープになるので、"C:\\Users\\..." にします。

コメント

JSON にはコメントの構文がありません。// も /* */ も書けません。VS Code の settings.json や tsconfig.json のように、コメントや末尾カンマを許す「JSONC」や「JSON5」という拡張方言を使うソフトウェアもあり、そこで書いたものを別のプログラムに渡すとエラーになります。説明を残したい場合は、"_comment": "..." のようなキーを入れる方法が慣習として使われます。

数値と日本語

数値に 01 のような先頭のゼロ、.5 のような先頭の小数点、NaN や Infinity は書けません。16進数も書けません。郵便番号や電話番号のように先頭がゼロになり得るものは、文字列として "0120" と書きます。

日本語はそのまま書けます。"\u5c71\u7530" のように Unicode エスケープで書かれたものも同じ意味で、ツールで整形すると元の文字に戻せます。JSON のファイルは UTF-8 で保存し、BOM は付けません。BOM 付きで保存すると、先頭の見えない文字が原因で「Unexpected token」のエラーになることがあります。

他の形式との境目

JSON を URL のパラメータや HTML の属性に埋め込むときは、そのままでは " や & が壊れるため、URLエンコード・デコードで変換してから渡します。バイナリや改行を含む値を JSON の文字列に入れるときは、Base64エンコード・デコードで文字列に変えてから入れるのが定石です。JWT のように JSON を Base64 で包んだ形式は、JWTデコードで中身を見られます。

確認に使えるツール

最終更新: 2026-10-24 / 監修: 飛田 宏紀(情報処理安全確保支援士(登録セキスペ))