YamlBox

データコンバーター · 5 分で読みました

CSV から JSON: スプレッドシートから構造化データへ

CSV はコンピューティングにおいて最も単純な形式のように見えますが、最もトリッキーな形式の 1 つのように動作します。 CSV から JSON への変換では、引用符で囲まれたフィールド内のカンマ、ヨーロッパのスプレッドシートのセミコロン区切り記号、テキストのままであるべき数値の列など、隠れたルールが表面化します。パーサーが何を行っているかを知ることで、失敗したインポートを 2 分で修正できます。

更新されました

ヘッダー行がキーになります

最初の行には JSON プロパティ名が指定され、後続のすべての行がオブジェクトになります。つまり、ヘッダーの衛生状態はスキーマ設計によって決まります。ヘッダー内のスペース、重複した名前、句読点により、快適に使用できないキーが生成されます。変換する前に名前を `snake_case` または `camelCase` に変更し、2 つの列が名前を共有していないことを確認します。重複したヘッダーはほとんどの実装で暗黙的に上書きされます。

CSV 内のすべては文字列です

CSV には型がまったくないため、コンバータが各列を解釈する方法を決定します。数字は数字になるので、算術演算が可能になります。 `true`/`false`はブール値になります。空のフィールドは、選択に応じて `null` または空の文字列になります。罠は識別子です。郵便番号、電話番号、請求書番号、および `1.10` などのバージョン文字列は文字列のままにしておく必要があり、そうしないと、先頭のゼロと末尾の重要性が失われます。列が数値に見えても識別子である場合は、テキストとして保持します。

引用符、カンマ、改行

RFC 4180 はこの問題を数十年前に解決しました。フィールドにカンマ、引用符、または改行が含まれる場合、フィールドは二重引用符で囲まれ、内部の引用符は 2 重になります。準拠したパーサー (ここにバンドルされているのは Papa Parse です) は、何も考えずにカンマや複数行のセルが埋め込まれたラップされたフィールドを処理します。カンマで単純に分割するパーサーは、1 つのアドレス フィールドにカンマが含まれるとすぐにシフトする列を生成します。これは、典型的な「なぜデータが 1 オフセットされるのか」というバグです。

区切り文字はロケールによって異なります。ヨーロッパの多くのロケールのスプレッドシートはセミコロンで区切られたファイルをエクスポートし、TSV はタブを使用します。すべての行が 1 つの長いキーに折りたたまれている場合は、区切り文字が間違っています。セミコロンまたはタブを選択して再実行してください。

CSV ファイルの出所 (およびその内容)

分析ツール、CRM システム、請求プラットフォーム、データベースからのエクスポートが最も一般的なソースであり、これらには通常、顧客名、電子メール、収益数値が含まれています。ローカルで変換すると、そのデータはネットワークから完全に遮断されます。 YamlBox CSV から JSON コンバータはブラウザで解析し、区切り文字と型の処理を選択でき、ネットワークが無効になっても動作し続けます。

期待のサイジング

CSV ファイルはおよそ 1 行に 1 つの JSON オブジェクトであるため、変換されたドキュメントは大きくなります。キーは行ごとに繰り返され、整形印刷によ​​り上部にインデントが追加されます。ブラウザが一時停止するほど大きなファイルの場合、オブジェクトの配列を変換してから縮小すると、実用的な結果が最小になります。ストリームまたはログ パイプラインが次のコンシューマである場合は、JSON 行 (1 行に 1 つのオブジェクト、配列なし) に変換するのが適切な形式です。

CSV ~ JSON — よくある質問

CSV の数字が文字列として表示されるのはなぜですか?

CSV には型が格納されないため、コンバータは列ごとに決定します。値が数値に見える場合は通常は変換されますが、先頭にゼロまたは末尾にポイントがある識別子は文字列のままである必要があります。型推論設定を探し、識別子の列をテキストとして保持します。

セミコロンで区切られたファイルを変換できますか?

はい — 区切り文字をセミコロンに設定します。ヨーロッパのスプレッドシートのエクスポートの多くは、小数点区切り文字がカンマの場合にセミコロンを使用します。カンマを期待する CSV パーサーは、それ以外の場合、行全体を含む 1 つの列を返します。

ブラウザで顧客データを含む CSV を変換しても安全ですか?

アップロードするより安全です。クライアント側の変換ではファイルは送信されないため、電子メールや収益数値を含むエクスポートはマシン上に残り、ツールはオフラインで動作し続けます。これは、切断して再度変換することで簡単に確認できます。

この投稿で言及されているツール

19 ツールの完全なリストを参照する

さらに読む記事

すべての 19 投稿 →