JSONとは
JSON(JavaScript Object Notation)は軽量なデータ交換フォーマットです。フロントエンドとバックエンドの通信、設定ファイル、APIレスポンスはすべてJSONを使います。構造が明確で、人間が読め、機械が解析でき、現代の開発における事実上の標準です。
JSONの構文ルール
データ型
- 文字列:ダブルクォートで囲む、例 "hello"
- 数値:整数または浮動小数点、例 42、3.14
- ブール値:true または false
- ヌル値:null
- 配列:角括弧で囲む、例 [1, 2, 3]
- オブジェクト:波括弧で囲む、キーと値のペア、例 {"name": "Tom"}
- ネスト:オブジェクトと配列は相互にネスト可能
基本ルール
- キーはダブルクォート必須(シングルクォート不可)
- 文字列はダブルクォート必須
- 末尾のカンマ不可(最後の要素の後にカンマを置かない)
- コメント不可
- 最上位はオブジェクトまたは配列のみ
フォーマットの3つのニーズ
バリデーション
JSONの構文が正しいかチェックします。カンマの過不足、クォートの不一致はすべて解析失敗につながります。
整形(Pretty Print)
1行に圧縮されたJSONを、インデント付きの複数行フォーマットに展開し、人間が読みやすくします。
圧縮形:
{"name":"Tom","age":20,"tags":["a","b"]}
整形後:
{
"name": "Tom",
"age": 20,
"tags": ["a", "b"]
}
圧縮(Minify)
整形フォーマットからすべてのスペースと改行を取り除き、1行に圧縮してサイズを削減します。送信や保存に使われます。
よくあるJSONエラー
クォートエラー
- シングルクォート使用:JSONはダブルクォートのみ許可
- クォートの閉じ忘れ
- キー名のクォート忘れ
誤り:{'name': 'Tom'}(シングルクォート) 正解:{"name": "Tom"}
カンマエラー
- 末尾カンマ:最後の要素の後に余分なカンマ
- カンマ漏れ:要素間のカンマ忘れ
誤り:{"a": 1, "b": 2,}(末尾カンマ) 正解:{"a": 1, "b": 2}
データ型エラー
- undefined使用(JSONにundefinedはない、nullを使う)
- NaN / Infinity使用(JSONは非対応)
- 関数、Dateオブジェクトは直接シリアライズ不可
エスケープエラー
文字列内の特殊文字はエスケープが必要:
- クォート:"
- バックスラッシュ:\
- 改行:\n
- タブ:\t
- キャリッジリターン:\r
誤り:"He said "hello""(クォート未エスケープ) 正解:"He said "hello""
エンコードエラー
JSONはUTF-8エンコード必須です。他のエンコードでは文字化けや解析失敗の可能性があります。
ネストと階層
ネストの例
{
"user": {
"name": "Tom",
"address": {
"city": "北京",
"zip": "100000"
}
},
"orders": [
{"id": 1, "items": ["A", "B"]},
{"id": 2, "items": ["C"]}
]
}
インデント
- 2スペースインデント:最も一般的
- 4スペースインデント:よりゆったり
- Tabインデント:一部のチームが使用
整形時はインデントスタイルを統一しましょう。
深いネスト
5階層を超えるネストは読みにくくなります。構造をフラット化するか分割することを検討しましょう。
JSONと他のフォーマット
JSON vs JSONL
- JSON:ファイル全体が1つのJSON(通常はオブジェクトまたは配列)
- JSONL(JSON Lines):1行が1つの独立したJSON、ログやストリーミングデータに適している
JSON vs JSON5
JSON5はJSONのスーパーセットで、以下をサポートします:
- シングルクォート
- 末尾カンマ
- コメント
- 16進数
ただしJSON5は標準JSONではなく、パーサーの互換性に制限があります。
JSON vs YAML
- JSON:厳格な構文、機械に優しい
- YAML:緩い構文(コメント、インデントによる階層をサポート)、人間に優しい
- 設定ファイルにはYAMLがよく使われ、API通信にはJSONが使われます
JSON vs XML
- JSON:軽量、タグのオーバーヘッドなし
- XML:冗長なタグ、ただし属性や名前空間をサポート
- 現代の開発ではJSONがXMLをほぼ代替しています
実践的なコツ
JSONのコピー
APIレスポンスやログからJSONをコピーし、フォーマットツールに貼り付けて整形し、読みやすくします。
JSONのデバッグ
APIがエラーを返した時、レスポンスJSONをフォーマットしてフィールドが正しいか確認します。
設定ファイル
設定ファイルをJSONで書き、フォーマット後に各フィールドの意味を注釈します(標準JSONはコメント非対応のため、JSONCや別ドキュメントを使用)。
データ変換
CSV to JSONやXML to JSONなどのシナリオでは、変換後にフォーマットして結果をバリデーションします。
CSV to JSONツールで表データをJSONにワンクリック変換できます。
フォーマットツールの使い方
バリデーション
JSONを貼り付けると、ツールが構文をチェックします。エラーがあれば場所と原因を指摘します。
整形
圧縮JSONを貼り付け、インデントを選び、整形をクリックすると、複数行フォーマットが出力されます。
圧縮
整形済みJSONを貼り付け、圧縮をクリックすると、1行で出力されます。
エスケープ
JSON文字列内の特殊文字をエスケープ、または逆に復元します。
DocsAllでJSONを処理
JSONにはエンコードと変換が伴います。関連ツールを使用:
- エンコード・デコードツール:JSON文字列のエスケープを処理
- CSV to JSONツール:表をJSONに変換
ブラウザ上で処理、データはアップロードされません。
よくある質問
整形後に中国語が \uXXXX になる
一部のツールはデフォルトで中国語をエスケープします。中国語をそのまま表示するには、Unicodeエスケープオプションをオフにします。
大きなJSONが重い
数MBのJSONのフォーマットは重くなる可能性があります。コマンドラインツール(jqなど)を使うとより効率的です。
コメントはどうすれば?
標準JSONはコメントをサポートしません。コメントが必要な場合はJSONC、JSON5、またはYAMLを使います。
まとめ
JSONフォーマットは3つがポイントです。構文のバリデーション、読みやすさのための整形、送信のための圧縮。よくあるエラーはクォート、カンマ、エスケープです。JSONの処理にはDocsAllエンコード・デコードツールとCSV to JSONツールを使いましょう。ブラウザ上で動作し、データが外部に漏れません。