Yueseryueser.com

← ガイド一覧

CSV から JSON への変換ガイド:見出し、引用符、失われる階層

CSV が表せるのは行と列だけです。JSON は入れ子を表せます。CSV から変換すると平坦なオブジェクトしか得られません。階層を戻せると思うところから間違いが始まります。

ツールを開く:CSVからJSONへの変換

表をコードに取り込む

プロダクト担当が設定表を Excel で書き出し、フロントで使える JSON にしたい。テスト用に行単位のデータが必要。API ドキュメントにマッピング表を載せたい。どれも見出しを整えてから一度変換するのが早道です。

結果は単純です。1行目がキーになり、以降の行がそれぞれ1つのオブジェクトになります。設定値、辞書、名簿のように「1行が1件」のデータに向いており、親子関係の表現には向きません。

引用符、カンマ、見出し

カンマ区切りでは、値にカンマを含む場合に二重引用符で囲みます。値の中の二重引用符は2つ重ねて書きます。囲まないと行が余分な列に分割され、以降の列がすべてずれます。しかもエラーになりません。

見出しはそのまま JSON のキーになります。小文字の英数字とアンダースコアを推奨します。空白や記号があるとコードでブラケット記法が必要になります。重複した見出しは後の列が前を上書きします。

境界:値はすべて文字列、階層は消える

値はすべて文字列のままです。数値に見える値も数値ではなく、真偽値に見える値も真偽値ではなく、空セルは null ではなく空文字になります。型変換はコードで明示的に行ってください。推測が一度外れると、後は暗黙の不具合になります。

CSV 自体に入れ子はありません。親子のオブジェクトを表すには平坦化するしかなく、変換後の JSON も平坦なままです。また行単位で解析するため、引用符内の改行は扱えず、セミコロン区切りにも対応しません。

よくある質問

数値がすべて文字列になるのはなぜですか

意図的に型推論をしていません。先頭が0の ID、長すぎる数値、真偽値に見える値は、自動変換で壊れやすいからです。コード側で変換し、失敗も処理してください。

値にカンマが入る場合はどうすればよいですか

その値を二重引用符で囲んでください。ファイル全体がセミコロン区切りなら、このツールでは読めません。カンマ区切りで書き出すか、別のツールを使ってください。

入れ子や複数行のセルは扱えますか

扱えません。CSV からの出力は常に平坦で、入れ子は後から組み立てる必要があります。引用符内の改行は行解析を壊します。JSON のまま扱うか、表計算ソフトから直接取り込んでください。

関連ツール:CSVからJSONへの変換