JSON・CSV・YAML の相互変換
JSON、CSV、YAML は多くの場合同じデータを表せますが、1対1で対応するわけではありません。このガイドでは、各形式が得意なこと、変換中に変わりうる細部、そして結果の確認方法を説明します。
各形式が得意なこと
JSON は、ウェブ API やプログラムが読み込む設定によく使われる形式です。型はオブジェクト、配列、文字列、数値、真偽値、null という少数の明確なものに限られます。構文が厳密なのでソフトウェアで解析しやすい一方、コメントは書けません。
CSV は表です。1行が1レコード、1列が1つの値に対応します。表計算ソフト、データベース、レポートツールに簡単に取り込め、大量の平坦なデータをコンパクトに表せます。データ型やネストした構造を記述する標準的な方法はありません。
YAML は人が読み書きしやすいように設計された形式です。コメントを書け、括弧の代わりにインデントを使い、JSON と同じ構造を表せるため、設定ファイルによく使われます。ただし構文が柔軟なぶん、インデントや引用符のちょっとした誤りで意味が変わることがあります。
| 機能 | JSON | CSV | YAML |
|---|---|---|---|
| ネストしたオブジェクトと配列 | あり | なし(平坦な表) | あり |
| データ型 | 文字列、数値、真偽値、null | テキストのみ | 値から推定 |
| コメント | なし | なし | あり |
| 主な用途 | API、アプリのデータ | 表計算、データの取り込み | 設定ファイル |
CSV ではネストが平坦化される
CSV ファイルには行と列しかないため、ネストしたデータは形を変える必要があります。一般的な方法は2つあります。1つ目は、address.city や address.zip のような列名に構造を平坦化する方法です。2つ目は、ネストした部分を JSON 文字列として1つのセルに入れる方法です。LeedyBox のデータ変換はどちらにも対応しています。
どちらの方法にも一長一短があります。平坦化した列は表計算ソフトで読みやすい反面、長さの異なる配列があると空欄の多い列がたくさんできます。セル内の JSON 文字列は構造を保てますが、手で編集するのは難しくなります。後で JSON に戻す場合は、構造が元のデータと一致しているかを確認してください。
CSV では型がテキストになる
CSV はすべての値をテキストとして保存します。数値の 42、文字列の "42"、真偽値の true は、セルの中ではどれも同じように見えます。CSV ファイルを読み戻すとき、プログラムはどの列が数値や日付なのかを推測するか、指定してもらう必要があります。LeedyBox の変換ツールは CSV の値をテキストとして読み込むため、CSV ファイルの数値は、変更しない限り JSON では文字列として表示されます。
表計算アプリは独自の推測も加えます。郵便番号や電話番号の先頭の 0 を削除したり、長い数値を指数表記にしたり、値を日付として解釈したりすることがあります。=、+、-、@ で始まるセルは数式として扱われることがあります。変換ツールには、CSV 出力用に Excel 数式の保護というオプション設定があります。
コメントと YAML の型
JSON にはコメントがないため、YAML を JSON に変換するとコメントは失われます。元に戻してもコメントは復元されません。コメントが重要な場合は、元の YAML ファイルを保管しておいてください。
YAML は引用符のない値から型を推測します。一部のパーサーが使う古い YAML 1.1 の規則では、no、yes、on、off のような単語が真偽値になるため、NO のような国コードが false に変わることがあります。2026-10-02 のような値は日付オブジェクトになることがあり、1e3 や 010 は数値として読み込まれることがあります。LeedyBox の変換ツールは YAML 1.2 のコアスキーマで YAML を読み込むため、no や日付はテキストのまま残りますが、ファイルを読み込むほかのツールでは動作が異なる場合があります。テキストのままにすべき値は引用符で囲むのが最も安全な習慣です。
JavaScript での大きな数値
JavaScript は数値を64ビット浮動小数点数として保存します。9,007,199,254,740,991(253 − 1)を超える整数はすべてを正確に表せるわけではないため、12345678901234567891 のような大きな ID は、解析時に知らないうちに丸められることがあります。これはこのツールを含むブラウザベースの変換ツールすべてに当てはまり、このツールはそのような数値を検出すると通知を表示します。データベースの ID などの長い識別子は、文字列として保存するほうが安全です。
結果を確認する
有効な出力が得られた変換でも、正しいとは限りません。結果を使う前に、次の点を確認してください。
- 行数や項目数を元のデータと比較します。
- 空の値、特殊文字、改行、ネストしたデータを含むレコードなど、いくつかのレコードを抜き取りで確認します。
- 移行先のシステムで数値、真偽値、日付であるべき列を確認します。
- 丸められた可能性のある長い数値がないか探します。
- まずデータのコピーを使って、出力を読み込むプログラムで検証します。
テキスト比較ツールを使うと、元のファイルと往復変換した結果を比較しやすくなります。
よくある質問
JSON を CSV に変換して、そのまま元に戻せますか?
単純で平坦なデータの場合に限られ、その場合でも数値や真偽値は通常テキストとして戻ります。ネストしたデータと型は使用したオプションによって変わるため、結果を元のデータと比較してください。
YAML の値が true や false に変わったのはなぜですか?
一部の YAML パーサーは、引用符のない yes、no、on、off のような単語を真偽値として扱います。テキストのままにするには、値を引用符で囲んでください。
変換するとデータはアップロードされますか?
LeedyBox のデータ変換はブラウザ内で動作するため、貼り付けたデータはお使いの端末で処理されます。