JSON CSV 変換ツール・YAML・TSV変換
JSON↔CSV、JSON↔YAML・TOML、CSV↔TSVを変換
JSON↔CSV、JSON↔YAML・TOML、CSV↔TSVを変換
すべての変換はブラウザ内で行われ、サーバーにはアップロードされません。ネストしたオブジェクトはドット記法で平坦化・復元され、数値・true/false・nullは自動判定されます。
読み込み中…
処理中…
0.0
停止していません。計算が終わると結果が表示されます。
JSON CSV 変換ツール・YAML・TSV変換について
このツールは表形式と設定ファイル形式の間を行き来します。JSON ↔ CSV タブはオブジェクトの配列を表に展開したり表から戻したりし、CSV ↔ TSV タブはカンマ区切りとタブ区切りを入れ替え、JSON ↔ YAML ↔ TOML タブは3つの設定ファイル形式を相互に変換します。どれも貼り付けたテキストをその場で変換してコピーする方式です。
形式変換で困るのは文法より「値が黙って変わる瞬間」です。郵便番号の先頭の0が消える、ExcelでCSVが文字化けする、YAMLで NO が false になる。以下では各形式の規則と、このツールがそうした箇所をどう扱うかを説明します。
CSVの規則は意外と少ない(RFC 4180)
CSVを記述した文書は2005年のRFC 4180で、規則は数行です。レコードは改行(CRLF)で区切り、フィールドはカンマで区切る。カンマ・ダブルクォート・改行を含むフィールドは全体をダブルクォートで囲み、中のダブルクォートは2つ重ねて("")書く。RFC自身が「標準を定めるものではなく、広く使われている形式を記録したもの」としているため、細部はソフトによって異なります。
このツールはCSVを書き出すとき、必要なフィールドだけを囲み、行末をCRLFにします。読み込みではCRLFとLFのどちらも受け付け、引用符内の改行もフィールドの一部として扱います。CSV → JSON と CSV ↔ TSV タブでは、引用符が閉じていない場合や列数が行ごとに違う場合に警告を出します。区切り文字はカンマ・セミコロン・タブから選べ、「自動検出」にしておくとCSVを読むときに見出し行から判定します。
ExcelでCSVが文字化けする理由:BOMとShift_JIS
Webで作られるCSVはほぼUTF-8です。ところが日本語版WindowsのExcelは、CSVをダブルクリックで開くとき、先頭にBOM(EF BB BF の3バイト)がなければUTF-8とは判断せず、システム既定のShift_JIS(CP932)として読みます。そのため「名前」が「蜷榊燕」のような文字列に化けます。Microsoftのサポート記事も、BOM付きUTF-8なら正しく開けること、そうでなければ[データ]タブの[テキストまたはCSVから]で取り込み、元のファイルを「65001: Unicode (UTF-8)」にするよう案内しています。
逆に、取引先から Shift_JIS のCSVを受け取ってこのツールに貼り付ける場合は、いったんテキストエディタで開いて文字化けしていないことを確認してから貼ってください。貼り付けた時点で文字はブラウザが解釈済みなので、化けた状態で貼れば化けたまま変換されます。
JSON → CSV の結果を「.csv (UTF-8 BOM、Excel用)」ボタンでダウンロードするとBOMが付き、Excelでダブルクリックしてもそのまま開けます。コピーしたテキストや通常の「.csv をダウンロード」にはBOMがないので、メモ帳などに貼って保存するなら「UTF-8 (BOM付き)」を選びます。また、Excelで「CSV UTF-8」として保存したファイルは先頭にBOMがありますが、CSVをJSONに変換するときにツールがBOMを取り除くので、1列目の見出しに見えない文字が付くことはありません。
JSON ↔ CSV:入れ子・配列・型
CSVは平らな表なので、入れ子のオブジェクトは展開します。{"addr": {"city": "Tokyo"}} は addr.city という列になり、CSV → JSON では列名をドットで分けて入れ子に戻します。配列は列に展開せず、["a","b"] のようなJSON文字列として1セルに入れます。
CSVには型がありません。CSV → JSON ではツールが型を推測し、数値らしいものは数値、小文字の true/false は真偽値、空セルと null は null にします。ただし 0123 のように0で始まる数字は郵便番号やコードの可能性が高いので文字列のまま残します。一方、1e3 は指数表記として 1000 になり、大文字の TRUE は文字列のままです。空文字列と null はCSVでは区別できないため、往復すると "" は null になります。
CSV ↔ TSV:タブには引用の規則がない
TSVはExcelやGoogleスプレッドシートのセルをコピーしたときの形式です。カンマを含む住所や金額を引用符なしで扱えますが、フィールド内のタブや改行を表す標準の方法がありません。このツールはCSVのセル内にタブや改行があると、TSVでは \t、\n(バックスラッシュ自体は \\)に置き換えて1行を保ち、TSV → CSV で元の文字に戻します。
YAML:ノルウェー問題と1.1/1.2
YAML 1.1では yes、no、on、off、y、n なども真偽値でした。国コードの一覧にノルウェー(NO)を引用符なしで書くと false になる「ノルウェー問題」が有名です。また 22:30 は60進数の 1350 と解釈されました。2009年のYAML 1.2はコアスキーマの真偽値を true/false 系に絞り、60進数も廃止しましたが、PyYAMLなど広く使われるライブラリの一部は今も1.1の規則が既定です。
このツールのYAMLパーサーは1.2寄りに動作し、NO、yes、22:30 はいずれも文字列として読みます。JSON → YAML で書き出すときは、1.1のパーサーが誤解しうる文字列("NO"、"yes"、"on")や数値に見える文字列("3.10")に引用符を付けます。
ほかに、引用符なしの 3.10 は数値なので 3.1 に、012 は 12 になります。アンカー・エイリアス(&、*)、マージキー(<<)、ブロックスカラー(|、>)は非対応でエラーになります。TOMLには null がないため、JSON の null は TOML では空文字列 "" になります(情報が失われる変換です)。
例
JSON → CSV:カンマ・引用符・入れ子・配列
- 入力
[{"id":1,"name":"Kim, Minjun","addr":{"city":"Seoul","zip":"04524"},"tags":["a","b"],"note":"He said \"hi\""},{"id":2,"name":"Lee","addr":{"city":"Busan"},"note":null}]- 結果
id,name,addr.city,addr.zip,tags,note 1,"Kim, Minjun",Seoul,04524,"[""a"",""b""]","He said ""hi""" 2,Lee,Busan,,,
カンマや引用符を含むフィールドだけが囲まれ、中の引用符は二重になります。配列はJSONのまま1セルに入ります。
CSV → JSON:型の推測
- 入力
id,zip,phone,flag,addr.city 1,04524,010-1234-5678,true,Seoul 2,1e3,,TRUE,Busan- 結果
[{"id":1,"zip":"04524","phone":"010-1234-5678","flag":true,"addr":{"city":"Seoul"}}, {"id":2,"zip":1000,"phone":null,"flag":"TRUE","addr":{"city":"Busan"}}]
04524 は文字列のまま、1e3 は数値 1000 になります。同じ列でも行によって型が変わる点に注意してください。
YAML → JSON:1.1なら変わっていた値
- 入力
country: NO answer: yes version: 3.10 time: 22:30 zip: 012- 結果
{"country": "NO", "answer": "yes", "version": 3.1, "time": "22:30", "zip": 12}
1.1のパーサーなら country と answer は false/true、time は 1350 になるところです。version と zip は数値なので、文字列にしたいなら引用符で囲みます。
使い方
- タブを選びます:JSON ↔ CSV、CSV ↔ TSV、JSON ↔ YAML ↔ TOML。
- 変換の向きを決めて入力欄に貼り付けます。
- 警告(閉じていない引用符、列数の不一致、非対応のYAML構文)を確認し、結果をコピーします。
よくある質問
CSVをExcelで開くと文字化けします。
BOMなしのUTF-8をExcelがShift_JISとして読んだためです。このツールでは「.csv (UTF-8 BOM、Excel用)」でダウンロードしてください。既存のファイルはBOM付きUTF-8で保存し直すか、[データ]→[テキストまたはCSVから]で65001(UTF-8)を選んで取り込んでください。
郵便番号の先頭の0が消えます。
多くはExcelで開いたときに消えています。このツールは0で始まる数字を文字列のまま保ちます。Excelでは取り込み時にその列を文字列に指定してください。
YAMLの yes/no は真偽値ですか?
1.1では真偽値、1.2では文字列です。このツールは1.2として読み、書き出し時はどちらでも文字列になるよう引用符を付けます。
YAMLのアンカーには対応していますか?
対応していません。エラーで知らせます。
出典
- RFC 4180
- Microsoft サポート — Opening CSV UTF-8 files correctly in Excel
- YAML 1.2.2 仕様
- YAML 1.1 bool 型
- TOML v1.0.0
基準日: