CSV→JSON変換

CSVの表をJSONのオブジェクト配列に変換します。処理はすべてブラウザ内で行われます。

すべてブラウザ内で動作します。アップロード、記録、保存は一切行いません。

表計算ソフトから書き出したデータを貼り付けると、列名をキーにした1行1オブジェクトのJSON配列が返ってきます。処理はブラウザ内で行われるので、顧客記録、給与、注文明細でいっぱいのファイルでも端末の外に出ることはありません。

仕組み

ドキュメントはRFC 4180に従って1文字ずつ読み取ります。これにより、フィールドに区切り文字、改行、引用符そのものを含めることができます。ダブルクォートで囲まれた部分はすべてそのままの文字として扱われ、2つ続けた引用符は1つの引用符になります。カンマと改行で単純に分割する方法では、カンマを含む最初の住所で破綻してしまいます。

指定しない限り1行目が列名になります。そうしないよう指定すると、各行はオブジェクトではなく配列として返されます。空欄の列名は位置に応じてcolumn_1、column_2のようになり、重複した列名には番号の接尾辞が付きます。オブジェクトに同じキーが2つあると、最初の列が黙って消えてしまうからです。

CSVには型がないので、すべての値は文字列として返されます。型として読み取るのはチェックボックスで選ぶ機能で、既定の動作ではありません。型推論は、商品コード007を数値の7に変えてしまうものだからです。有効にした場合も意図的に慎重に動作します。先頭のゼロ、先頭のプラス記号、前後の空白がある値は文字列のまま残り、doubleとして正確に保持できないほど大きな整数も同様です。

例

ケース 入力 結果
区切り文字を含む、引用符で囲まれたフィールド name,city "Doe, John",Geneva [ { "name": "Doe, John", "city": "Geneva" } ]

よくある質問

ファイルがセミコロン区切りです。それでもCSVですか?

はい。ヨーロッパの多くの地域ではそれが普通です。小数点にカンマを使う地域設定の表計算ソフトでCSVを保存すると、カンマを区切り文字にも使うことはできないので、セミコロンを使います。区切り文字の一覧から選んでください。タブとパイプも同じ理由で用意しています。

郵便番号の先頭のゼロが消えたのはなぜですか?

型推論を指定していなければ、消えていません。型推論なしでは、すべての値が書かれたとおりの文字列のまま残ります。型推論を有効にしても、まさにこのために、ゼロで始まる値は文字列のまま保持されます。プラス記号で始まる値や前後に空白がある値も同様です。

フィールド数が違う行はどうなりますか?

短い行は空文字列で埋められます。末尾の空のフィールドは、ファイルを書き出したソフトが削ってしまうことが多いからです。長い行の余分な値は捨てずに位置に応じた名前で残すので、気づかないうちに何かが消えることはありません。

ファイルはどこかにアップロードされますか?

いいえ。ページはドキュメントをローカルで解析する小さなスクリプトを読み込みます。ページの読み込み後にネットワークから切断しても、ツールはそのまま動作します。

知っておきたいこと

  • 処理はすべてブラウザ内で行われます。ドキュメントがアップロード、記録、保存されることはありません。
  • 引用符の扱いはRFC 4180に従います。区切り文字、ダブルクォート、改行を含むフィールドは引用符で囲まれ、引用符で囲まれたフィールド内のダブルクォートは2つ重ねて書かれます。バックスラッシュは普通の文字であり、エスケープとして扱われることはありません。

出典

開発者向けのすべてのツール