コンテンツへスキップ

CSV ⇄ JSON 変換

ブラウザ内処理ファイルはアップロードされませんこの処理はブラウザ内で完結します。ファイルはどこにも送信されません。

CSVをJSONに、JSONをCSVに変換します。区切り文字(カンマ・タブ・セミコロン)と見出し行の有無を選べ、引用符で囲まれた中のカンマや改行も正しく読み取ります。変換前後は表とテキストの両方で確認できます。

入力

タブ区切り(TSV)は表計算ソフトからそのまま貼り付けたときの形式です。セミコロンは、小数点にカンマを使う地域の Excel が書き出す形式です。

外すと、CSVは配列の配列に、JSONは項目名の行を付けずに書き出します。項目名のない生データを扱うときに使います。

「123」を数値に、「true」を真偽値に、空欄を null にします。先頭が0の番号(郵便番号・電話番号)や桁の多いIDは、数値にすると値が変わるため文字列のままにします。

出力

表として読み取れる行がありません。
CSVname,city"佐藤, 花子",東京JSON[{ "name": "佐藤, 花子", "city": "東京"}]区切りはカンマ・タブ・セミコロンから選べ、逆向きの変換もできます。
引用符の中にあるカンマや改行は、区切りではなくデータとして読む。表計算から書き出したCSVで住所や備考が壊れるのは、たいていここを見落としているため。
ツール一覧

特長

引用符の中のカンマと改行を正しく扱う
行を改行で割ってカンマで分ける方式では、"東京都, 港区" のような値や、セル内の改行が入った備考欄で列がずれます。ここでは RFC 4180 に沿って1文字ずつ状態を見ながら解析するため、引用符の中に区切り文字や改行があっても崩れません。列がずれていることに気づくのは取り込んだ後になりがちで、そこから原因を探すのは手間がかかります。
読み取った表をその場で確認できる
区切り文字を間違えても、変換結果は「1列だけのJSON」として正常に出てしまいます。読み取った表を画面に出しているので、どこで区切られたかを目で確かめてから持ち出せます。各行には行番号を添えてあるため、列数がそろわないという警告が指している行も、そのまま探せます。
番号を数値に変えて壊さない
型変換を有効にしても、先頭が0の郵便番号や桁数の多いIDは文字列のまま残します。数値にして書き戻したときに同じ文字列に戻らない値は、変換していません。判定は桁数や見た目ではなく、実際に数値へ変換して文字列に戻し、元と一致するかどうかで行っています。

使い方

  1. 変換の向きを選ぶ

    一番上の切り替えで「CSV → JSON」か「JSON → CSV」を選びます。試すだけなら「例を入れる」を押すと、引用符の中にカンマと改行を含むサンプルが入ります。

  2. 貼り付けて、区切り方を合わせる

    入力欄にデータを貼り付け、区切り文字(カンマ・タブ・セミコロン)と「1行目は見出し」の設定を合わせます。「読み取った表」がその場で変わるので、意図どおりに区切られているかを確認できます。

  3. 結果を持ち出す

    結果欄のコピーボタン、または保存ボタンで書き出します。「結果を入力に移す」を押すと向きが反転して入力欄に移るので、元に戻るかどうかも確かめられます。

CSV の落とし穴

CSV に「正式な仕様」はほぼ無い
RFC 4180 という文書はありますが、これは後から現状をまとめたもので、規格として全員が従っているわけではありません。区切り文字、改行コード、引用符の扱い、文字コードのどれもソフトによって違います。そのため「CSVです」と言われたファイルは、開いて中身を見るまで形式が確定しません。このページの表示は、その確認を目でできるようにするためのものです。区切り文字としてカンマ・タブ・セミコロンの3つを用意しているのも同じ理由で、受け取ったファイルがどれで書かれているかは、実際に読み込んでみるまで分かりません。
区切り文字がカンマとは限らない
小数点にカンマを使う地域(ドイツ、フランスなど)では、Excel はセミコロン区切りの CSV を書き出します。また表計算ソフトの画面からコピーして貼り付けると、多くの場合タブ区切りになります。1列にまとまって表示されたときは、まず区切り文字の指定を疑ってください。なおタブ区切りは TSV と呼ばれ、値の中にタブが入ることはまずないため、カンマ区切りより崩れにくい形式です。社内だけでやり取りするなら、はじめからタブ区切りを選ぶ手もあります。
文字化けの原因はたいてい BOM
Excel は、BOM の付いていない UTF-8 の CSV を開くと日本語を別の文字コードとして解釈し、文字化けします。BOM は「このファイルは UTF-8 です」と先頭で宣言する3バイトの印です。保存時のチェックを入れると付きます。逆に、BOM 付きのファイルをプログラムで読むときは、先頭の見出しに見えない文字が混ざる点に注意してください(このページでは自動的に取り除いています)。BOM は UTF-8 では本来必要のない印で、規格としても推奨されているわけではありません。Excel で開く予定がないなら、付けずに渡したほうが後の扱いは楽になります。
JSON にできて CSV にできないこと
JSON は入れ子(オブジェクトの中のオブジェクト、配列)を持てますが、表のセルは1つの値しか持てません。ここでは入れ子の値をセルに JSON の文字列として書き出し、その旨を画面に表示します。項目名を a.b.c のようにつないで平らにする方式もありますが、元に戻せなくなる場合があるため採用していません。表として扱いたい場合は、変換する前に JSON の側を平らな形に整えておくのが確実です。どの項目を列にするかは、機械が推測するより、書いた人が決めたほうが正しくなります。

よくある質問

セルの中に改行が入った CSV も読めますか?
読めます。引用符で囲まれていれば、その中の改行は値の一部として扱います。読み取った表でも、そのセルの中で改行されて表示されます。ただし引用符で囲まれていない改行は行の区切りなので、そこは元のファイルの書き方どおりに解釈します。変換後の JSON では、その改行は \n として1つの値の中に入ります。行が分かれていないことは、そちらでも確認できます。
列数がそろわない行があると言われました
1行目と列数が違う行がある、という警告です。引用符の閉じ忘れや、引用符で囲んでいない値の中に区切り文字が入っている場合によく出ます。読み取った表で、該当する行がどこで切れているかを確認してください。列数が違ってもJSONへの変換自体は行い、足りない項目は空として扱います。逆に、列数がそろっていても中身がずれていることはあります。読み取った表で、1列目と2列目に入っている内容が想定どおりかを見比べてください。
大きなファイルでも使えますか?
数万行までは問題なく動きます。ただし入力しながら毎回解析するため、数MBを超えると入力の反応が鈍くなります。表示する表は先頭20行までですが、コピーと保存は全件が対象です。動きが重く感じる場合は、確認したい範囲だけを切り出して貼り付けるか、区切り文字と見出しの設定を先に決めてから全体を貼り付けてください。
Excel のファイル(.xlsx)は開けますか?
開けません。.xlsx は圧縮された別形式です。Excel で「CSV UTF-8(コンマ区切り)」として保存し直すか、シートを選択してコピーし、タブ区切りとして貼り付けてください。貼り付ける場合は、区切り文字で「タブ」を選んでください。書式や数式は失われ、画面に表示されている値だけが渡ります。
データはどこかに送信されますか?
送信されません。解析も変換もブラウザの中だけで行われ、ページを閉じると消えます。顧客名簿や勤怠データのように外に出せないファイルでも、そのまま扱えます。保存を押したときも、ファイルはブラウザが手元で書き出しているだけで、データが外に出ることはありません。
スポンサーリンク