JSON の書式ルールと注意点

JSON を正しく記述するためには、いくつかの厳格なルールを守る必要があります。JavaScript のオブジェクトリテラルとは異なるルールがあるため、注意が必要です。

文字列はダブルクォートのみ

JSON では、文字列を囲むのはダブルクォート " だけです。シングルクォート ' やバッククォート ` は使用できません。

正しい
{"name": "田中"}
誤り
{'name': '田中'}

キーも文字列として記述

オブジェクトのキーは必ずダブルクォートで囲む必要があります。JavaScript では省略できますが、JSON では必須です。

正しい
{"age": 25}
誤り
{age: 25}

末尾のカンマは禁止

配列やオブジェクトの最後の要素の後にカンマを置くことはできません。これは JavaScript では許容されることがありますが、JSON では構文エラーになります。

正しい
[1, 2, 3]
誤り
[1, 2, 3,]

コメントは書けない

JSON にはコメント機能がありません。///* */ を使うとパースエラーになります。

{
  "name": "田中"
}

設定ファイルなどでコメントが必要な場合は、JSON5 や JSONC といった拡張形式を検討するか、別途ドキュメントを用意します。

使用できるデータ型

JSON で表現できるのは以下の6種類のみです。

文字列("hello")
数値(123, 3.14)
真偽値(true, false)
null
オブジェクト({})
配列([])

undefined、関数、Date オブジェクト、正規表現などは直接表現できません。必要な場合は文字列として格納し、パース後に変換する必要があります。

数値の制限

JSON の数値は JavaScript の Number 型として扱われます。非常に大きな整数を扱う場合は精度が失われる可能性があるため、文字列として保存することも検討してください。

// 大きな数値は精度が失われる
const json = '{"id": 9007199254740993}';
const obj = JSON.parse(json);
console.log(obj.id); // 9007199254740992(精度が落ちている)

これらのルールを守ることで、どの環境でも正しくパースできる JSON を作成できます。