CSV ⇔ JSON/XML 相互変換ツール

スプレッドシートやデータベースのCSVデータを,プログラムで扱いやすいJSONまたはXML形式に相互変換します.

読み込み中...

入力データの記述例

id,name,role
1,Alice,Admin
2,Bob,User

処理後の出力結果例

[
  {
    "id": "1",
    "name": "Alice",
    "role": "Admin"
  },
  {
    "id": "2",
    "name": "Bob",
    "role": "User"
  }
]

よく発生する構文エラー・記述ミス

  • カンマ区切りとタブ区切りが1つのファイル内で混在している.
  • ダブルクォーテーションで囲まれたデータ内のカンマや改行が正しくエスケープされていない.
  • 1行目のヘッダー列数と,2行目以降のデータ列数が一致していない.

対応規格・動作仕様

CSV (カンマ区切り)TSV (タブ区切り)JSON (オブジェクトの配列)

関連する技術解説・ブログ記事

ZeroToolsのブラウザ内処理と,外部通信を利用する機能の違いやデータの取り扱いについて.

記事を読む

ZeroToolsのブラウザ内処理とプライバシー

ZeroToolsは、入力内容を端末内で処理するツールを中心に提供しています。各ツールの対応範囲と制限を確認して利用してください。

データの取り扱い・プライバシー方針
第1章

**RFC 4180**準拠のコンマ区切り値解析と多次元配列直列化機構

CSVからJSONおよびJSONからCSVへの相互変換において中核をなすのは、RFC 4180標準仕様に完全に準拠した構文解析エンジンの搭載です。この仕様では、各レコードがキャリッジリターンとラインフィードの組み合わせで終端され、フィールドはコンマで区切られることが厳格に定められています。

特に複雑なのが、フィールド値そのものにコンマ、改行コード、あるいはダブルクォートが含まれる場合の処理です。本変換器の解析器は、これらの特殊文字を内包するセルを検知すると、直ちにステートマシンをエスケープ処理モードへ移行させます。ダブルクォートで囲まれた文字列内のダブルクォートは連続する二つのダブルクォートとして解釈され、正しく単一の文字として抽出されます。

これと同時に、JSON側の構造体への直列化プロセスが連動します。フラットな二次元表構造であるCSVの各行は、JSONのオブジェクト配列へと変換される際、ハッシュマップのキーとバリューのペアとして再構築されます。逆にJSONからCSVへ変換する際は、階層化されたオブジェクト群を展開し、すべてのキーを走査して一意な列名の集合を生成した上で、各行の欠損値を空のフィールドとして補間しながら出力ストリームを生成します。

第2章

ヘッダー行制御と動的型推論アルゴリズムの挙動

データ変換の精度を決定づけるもう一つの要素が、値のデータ型を自動的に推論し割り当てるアルゴリズムです。CSVは本質的にすべてのデータを文字列として保持しますが、JSONフォーマットは数値、ブール値、null、そして文字列という明確な型システムを持っています。

本変換器は、ヘッダー行の有無を指定するフラグを評価した後、データ行の走査を開始します。各セルから抽出された文字列トークンは、まず正規表現を用いた数値評価器にかけられます。浮動小数点や負の符号を含む文字列が数学的に妥当な数値として評価可能であれば、内部的にNumber型へキャストされます。

次に、真偽値の判定が行われ、大小文字を問わず特定の予約語に一致する場合はBoolean型として解釈されます。空のセルや明示的な欠損値を示す文字列はnull型として扱われ、これらのいずれの条件にも合致しないデータのみがString型として保持されます。

この動的型推論により、出力されるJSONデータは後続のシステムでそのままプログラム的な操作が可能な、厳密なデータ構造を持つことになります。

第3章

大規模データセットにおけるチャンク処理とメモリ制御

数百万行に及ぶ巨大なデータセットを処理する際、ファイル全体を一度にメインメモリへロードする従来のアプローチでは、ヒープ領域の枯渇によるシステムクラッシュを招く危険性があります。これを回避するため、本変換機構ではストリーム読み込みとチャンク分割処理を組み合わせたメモリ制御アーキテクチャを採用しています。

ファイルポインタはファイルの先頭から順次データを読み込み、あらかじめ定義されたバッファサイズに達するごとに、未完了のレコード境界を検知して安全なチャンクとして切り出します。各チャンクは独立したワーカースレッドへディスパッチされ、パース処理と直列化が非同期に実行されます。

変換済みのJSONオブジェクトは随時出力ストリームへフラッシュされるため、アプリケーションのメモリ消費量は常に一定の閾値以下に保たれます。この非同期ストリーミング処理により、クライアントマシンの物理メモリ容量に依存することなく、エンタープライズ規模の巨大なファイル群を極めて安定して変換することが可能となっています。

第4章

ブラウザローカル処理による機密情報保護アーキテクチャ

顧客の個人情報や企業の財務データなど、高度な機密性を持つ情報を外部サーバーへ送信することは、重大なセキュリティリスクを伴います。本変換器は、ウェブアセンブリと最新のブラウザAPIを駆使し、すべての変換処理をユーザーのローカル環境であるブラウザのサンドボックス内で完結させるアーキテクチャを実現しています。

ファイルが選択された瞬間から、データの読み込み、構文解析、メモリ空間での型推論、そして最終フォーマットへの変換とダウンロードに至るまで、ネットワークリクエストは一切発生しません。データパケットがローカルマシンのネットワークインターフェースを通過することがないため、中間者攻撃やサーバー側でのデータ漏洩の可能性を物理的かつ論理的に完全に遮断します。

このクライアントサイドレンダリングに基づく設計は、厳格なデータコンプライアンス要件が求められる医療機関や金融機関のデータクレンジング業務において、最高レベルの安全性を提供します。

第5章

文字エンコーディングの自動判別とバイトオーダーマークの除去

多様なシステムから出力されるデータファイルは、必ずしも単一の文字コードで統一されているわけではありません。特にレガシーシステムからエクスポートされたファイルにおいては、Shift_JISなどの特定地域に依存したエンコーディングが頻繁に使用されます。

本ツールに組み込まれた文字コード判別モジュールは、ファイルの先頭数キロバイトのバイトシーケンスをサンプリングし、文字コードの出現頻度とバイトパターンから統計的にエンコーディングを特定します。UTF-8と判定された場合でも、ファイルの先頭に付与されている可能性があるバイトオーダーマークの存在を検査し、発見された場合は直ちにストリームから除去します。

バイトオーダーマークが残留したままJSONパースを実行すると、先頭キーの文字列が不可視文字を含んでしまい、データ連携先でのキー参照エラーを引き起こす原因となります。この高度な前処理ロジックにより、文字化けや構文エラーを未然に防ぎ、常にクリーンなデータストリームを後段のパーサーへ供給します。

第6章

システム間連携とスクリプト組み込みの高度な運用手法

変換されたJSONデータは、現代のソフトウェアアーキテクチャにおけるデータハブとして機能します。例えば、ドキュメント指向データベースへのインポート時には、生成されたJSON配列を直接バルクインサートAPIへ投入することで、スキーマレスなデータ構造を即座に永続化できます。

また、RESTfulな外部APIとの連携においても、ペイロードとしてそのまま送信可能な形式となります。サーバーサイドのNode環境やデータ分析基盤のPythonスクリプトと連携する場合、本変換器の処理結果を標準入力パイプライン経由で受け取るシェルスクリプトを構築することで、データ変換から後処理、分析までの完全な自動化フローを構築できます。

具体的には、変換されたJSONファイルをPythonのパンダスライブラリでデータフレームとして読み込み、複雑な統計処理や機械学習モデルへの入力データとして活用するといった、高度なデータパイプラインの起点として本ツールをシームレスに組み込むことが可能です。