JSON・CSVの基本と変換のコツ(初心者向け)
仕事でデータをエクスポート・インポートしていると必ず出会うJSONとCSV。 それぞれの特徴と、変換時につまずきやすいポイントを整理します。
JSONとCSVの違い
| JSON | CSV | |
|---|---|---|
| 形式 | キーと値のペア({ })、配列([ ])でネスト構造を表現 | カンマ区切りのテーブル形式(1行=1レコード) |
| 得意なこと | 階層構造のあるデータ、API連携 | 表形式データ、Excel・スプレッドシートとの相性 |
| 人が読みやすいか | 構造が複雑だと読みにくい | 単純な表なら読みやすい |
| 主な用途 | Webサービスの設定ファイル・API通信 | 顧客リスト・売上データなどの表計算 |
ざっくり言うと、住所録や売上一覧のような「表」で表せるデータはCSV向き、 商品情報のように「1件の中にさらに詳細な内訳がある」ようなデータはJSON向きです。
JSONでよくある構文エラー
- 末尾の余計なカンマ:配列やオブジェクトの最後の要素の後にカンマを付けるとエラーになります(JavaScriptのコードでは許容される書き方でも、JSONとしては無効です)。
- キーがクォートされていない:JSONではキーは必ずダブルクォート(
"key")で囲む必要があります。シングルクォートやクォートなしは無効です。 - シングルクォートで文字列を囲んでいる:JSONの文字列は必ずダブルクォートです。
- コメントが書かれている:JSONには本来コメントの仕様がありません(
//や/* */は無効)。
エラーの箇所を目で探すのは大変なので、 JSON整形・検証に貼り付けると、構文エラーの位置を示しながらインデント整形してくれます。
CSVでよくある落とし穴
- 文字コードの不一致:Excelで保存したCSVはShift-JIS(またはCP932)になっていることが多く、 UTF-8を前提とするシステムに読み込むと文字化けします。開く前に文字コードを確認します。
- 区切り文字の違い:「カンマ区切り」が標準ですが、地域設定によっては「タブ区切り」や「セミコロン区切り」で 書き出されることがあります。
-
値にカンマ・改行が含まれる場合:住所や備考欄にカンマが含まれると、正しくは値全体をダブルクォートで囲む必要があります
(
"東京都, 千代田区"のように)。囲みが抜けていると列がずれます。 -
先頭ゼロが消える:郵便番号や社員番号(
0123など)をExcelで開くと、 数値として解釈されて先頭のゼロが消えることがあります。テキストとして扱う設定が必要です。
変換の考え方
JSON配列をCSVに変換する場合、配列の1つのオブジェクトが1行に、 オブジェクトの各キーが1つの列(ヘッダー)に対応します。 逆にCSVをJSONにする場合は、1行目のヘッダーがキー名になり、2行目以降の各行が1つのオブジェクトになります。 ネストしたオブジェクトや配列を含むJSONは、そのままでは単純な表にならないため、 変換時にどう平坦化するか(内側のキーをどう列名にするか)を意識する必要があります。 CSV ⇔ JSON 変換では、区切り文字やヘッダーの有無、型変換(数値・真偽値として扱うか)を指定して相互変換できます。
URLやHTMLに埋め込むとき
JSONやCSVの内容をURLパラメータやHTMLにそのまま埋め込むと、記号(& = < など)が
別の意味に解釈されてしまうことがあります。安全に埋め込むには
URLエンコード・Base64・HTMLエスケープで変換してから使います。
まとめ
- 表形式のデータはCSV、階層構造のあるデータはJSONが向いている。
- JSONは末尾カンマ・クォート忘れ、CSVは文字コード・区切り文字・先頭ゼロの消失に注意。
- JSON配列の1要素=CSVの1行、キー=列という対応で変換される。
構文チェックは JSON整形・検証、 相互変換は CSV ⇔ JSON 変換、 URLやHTMLへの埋め込みは URLエンコード・Base64・HTMLエスケープ をご利用ください。