CSVからJSONへの変換ツール
CSVを貼り付けると、ヘッダー行をキーとするJSONオブジェクトの配列が得られます。ヘッダー行がなければ、配列の配列になります。方向を切り替えると、フラットなオブジェクトのJSON配列をCSVに戻せます。引用符で囲まれたカンマ、二重引用符、フィールド内の改行は正しく読み取られ、変換はブラウザ内で実行されます。無料、登録不要。
方向
CSVからJSONへの変換ツールの使い方
- 1. 方向を選ぶ。 CSV → JSON が初期設定です。JSON → CSV を選ぶと、フラットなオブジェクトのJSON配列を入力します。
- 2. オプションを設定する。 区切り文字は自動検出するか、カンマ、セミコロン、タブのいずれかに固定できます。JSON → CSVで自動検出を選ぶと、カンマで出力されます。CSV → JSONでは、インデントを2スペース、4スペース、タブから選び、1行目をヘッダーとして扱うかどうかも指定します。
- 3. 貼り付けて変換する。 変換 を押します。引用符が閉じていない、JSONが不正、配列がオブジェクトで構成されていない、といった問題は、出力の代わりにメッセージとして表示されます。
- 4. コピーまたはダウンロードする。 結果をコピー で出力をコピーできます。ダウンロードボタンでは
data.jsonまたはdata.csvとして保存されます。
CSVの読み取り方
CSVは単純に見えますが、そうではありません。同じファイルでもカンマ、セミコロン、タブが区切りに使われることがあり、フィールドの中に区切り文字そのものが含まれることもあります。唯一の仕様に近いものは RFC 4180 で、これは標準ではなく情報提供の文書です。カンマ、二重引用符、改行を含むフィールドは二重引用符で囲む必要があり、そのようなフィールドの中の二重引用符は2つ重ねて書く、と定めています。このコンバーターはこの規則に従い、いくらかの寛容さを加えています:
- 引用符付きフィールド。 二重引用符で始まるフィールドは、閉じの引用符までを一つのフィールドとして扱うため、区切り文字、改行、リテラルの引用符を表す
""を含めることができます。閉じられていない引用符があると変換は停止し、そのフィールドが始まった行を示します。 - 行末。 LF、CRLF、単独のCRのいずれも行の終わりとして扱われ、空行は読み飛ばされます。
- 区切り文字の検出。 自動モードでは最初の行だけを見て、カンマ、セミコロン、タブのうち最も多く現れるものを選びます。同数の場合はカンマになります。1列だけの場合やタイトル行があるなど、最初の行が特殊な場合は、区切り文字を自分で選んでください。RFC 4180はカンマだけを想定しています。セミコロンは、ヨーロッパ地域の設定の表計算ソフトから書き出されたファイルでよく使われます。
- すべて文字列として扱われます。 このコンバーターは型を推測しません。そのため
2020は数値ではなく文字列"2020"になり、空のセルは null ではなく""になります。コードで数値が必要な場合は、後から型を変換してください。
具体例
ヘッダー
name,note,year
1行目
"Smith, Jane","Said ""hello""",2020
2行目
Lee,short
結果
オブジェクトが2つできます。Smith, Janeは note が Said "hello"、year が "2020" になり、Leeは note が short、year が "" になります。
Smith, Jane のカンマは引用符によって一つのフィールドに収まり、二重引用符は一つにまとめられます。Leeの行はセルが一つ足りないため、欠けている year は空の文字列になります。逆に 余分な セルを持つ行では、ヘッダーがそれらに名前を付けられないため、余分な部分は失われます。「1行目をヘッダーとして扱う」のチェックを外すと、同じ入力は [["name","note","year"],…] という配列の配列になり、短い行はそのまま短いままになります。
重複したヘッダー名は衝突します。id という名前の列が二つあると、後の列が勝ち、前の列は失われます。そのため、先に一方の名前を変更してください。
逆方向:JSONからCSVへ
逆方向では、最上位が配列で、その項目がすべてオブジェクトである必要があります。ヘッダー行は、初めて現れた順に並べたすべてのキーの和集合です。そのため、キーが異なるオブジェクトでも列がそろい、値がない場合は空になります。数値と真偽値はそのまま書き出され、null は空のセルになります。ネストされた配列やオブジェクトは、JSONテキストとしてセルに書き込まれ、引用符で囲まれます。データがネストしている場合は、先に平坦化してください。区切り文字、引用符、改行を含むセルは引用符で囲まれ、引用符は二重になります。行はプレーンなLFで結合されます。
[{"name":"Smith, Jane","year":2020,"tags":["a","b"]},{"name":"Doe","note":"two\nlines","year":null}] に適用すると、コンバーターはヘッダー name,year,tags,note を書き出します。1行目は "Smith, Jane"、2020、引用符付きのテキスト ["a","b"] になり、2行目はDoeの行で、year と tags が空、note が引用符付きの二行のテキストになります。
どのツールが必要ですか?
| やりたいこと | 使うツール |
|---|---|
| CSVとJSON配列を相互に変換する | このページ |
| CSVをテーブルとして表示し、HTMLとしてコピーする | CSV → テーブル |
| CSVからMarkdownの表を作る | Markdownテーブルジェネレーター |
| CSVの一部の列だけを残す | 列抽出ツール |
| JSONそのものを確認・整形する | JSONフォーマッター |
| YAMLやXMLをJSONに変換する、またはその逆 | YAMLからJSONへの変換ツール、XMLからJSONへの変換ツール |
| 論文用にCSVの表を組版する | LaTeXテーブルジェネレーター、APAテーブルジェネレーター |
よくある質問
- CSVをJSONに変換するにはどうすればよいですか?
- CSVを入力欄に貼り付け、「CSV → JSON」を選んだまま変換を押してください。「1行目をヘッダーとして扱う」にチェックが入っていれば、ヘッダーの名前をキーとするオブジェクトの配列になります。チェックを外すと配列の配列になります。結果をコピーするか、data.json としてダウンロードしてください。
- 引用符で囲まれたフィールドのカンマや改行は扱えますか?
- はい。二重引用符で囲まれたフィールドには、RFC 4180が説明するとおり、区切り文字、改行、二重になった引用符を含めることができます。閉じられていない開始引用符があると変換は停止し、そのフィールドが始まった行を示します。
- どの区切り文字に対応していますか?
- カンマ、セミコロン、タブです。最初の行から自動検出するか、手動で選べます。パイプやその他の区切り文字には対応していません。列抽出ツールや検索置換で、先にカンマに置き換えることができます。
- JSONの数値が文字列になるのはなぜですか?
- CSVには型がなく、このコンバーターも型を推測しないため、すべての値は文字列に、空のセルは空の文字列になります。そうすることで、
007や1e5のような値を書かれたとおりに保てます。数値が必要な場合は、自分のコードで変換してください。 - JSONからCSVへの変換はどのように動作しますか?
- オブジェクトのJSON配列が必要です。各オブジェクトが1行になり、列はどこかに現れるすべてのキーになります。ネストされたオブジェクトや配列は、JSONテキストとしてそのセルに書き込まれます。不正なJSONは、ブラウザのパーサーが位置を返す場合に行番号付きで報告されます。
- 変換後のCSVがExcelで正しく開かないのはなぜですか?
- ファイルはBOMのない純粋なUTF-8で、選んだ区切り文字を使っています。そのため、セミコロンを期待する地域のExcelでは、すべてが一つの列に入ってしまうことがあります。また、英語以外の文字は、インポートウィザードでUTF-8を指定する必要がある場合があります。セミコロンを区切り文字に選ぶと、最初の問題はよく解決します。
- データはどこかにアップロードされますか?
- いいえ。どちらの方向の変換もブラウザ内で行われ、貼り付けたテキストがCitationEasyに送信されることはありません。ダウンロードファイルもローカルで生成されます。