ブラウザーでCSVとJSONを変換すると、ファイル内容をデバイス内に保持できることがあります。アプリケーションがすべてをローカルで読み取り、解析し、変換し、ダウンロードする場合に実現します。この設計はデータ転送を減らします。すべてのページ、拡張機能、デバイス、入力を自動的に安全にするものではありません。
簡単な回答: ブラウザー内のローカル処理を説明するコンバーターを使います。非常に機密性が高く、重要でない作業では、アプリケーションがオフラインで動作する場合にネットワークを切断します。区切り文字、ヘッダー、エンコード、データ型、数式、行数を確認します。元ファイルを削除する前にJSON出力を検証します。
このガイドでは、CSVとJSONの違い、「ブラウザーで非公開」の意味、変換の検証方法を説明します。CSV to JSON Converter、JSONツール、CSVおよびXMLデータツールを参照します。
ファイルをアップロードせずにCSVをJSONへ変換できますか?
はい。最新のブラウザーは、ユーザーが選択したファイルをページが読み取ることを許可します。JavaScriptは、内容をアプリケーションサーバーへ送らず、メモリ内で解析してダウンロードを作成できます。
W3C File APIは、選択したファイルとバイナリデータへのブラウザーアクセスを定義します。ローカル変換は、ファイル入力、FileReader、Blob、オブジェクトURL、ダウンロード操作を使うことがあります。ページがすでにオフラインで動作しない限り、ブラウザーはアプリケーションコードをどこかから読み込みます。
直接の回答: 「ブラウザーで実行」は、主な変換がどこで起きるかを説明します。それだけでは、コードがデータを送らないことを証明しません。データが機密の場合は、製品の説明、ネットワーク動作、コード管理、拡張機能、デバイス方針を確認します。
アプリケーションは、コードの判断によりテレメトリ、エラー詳細、内容を送信できます。侵害された依存関係も動作を変えることがあります。拡張機能はページへ広範囲にアクセスできます。管理対象デバイス、ウイルス対策ソフト、同期フォルダー、クリップボード管理ツール、システムバックアップは、別のデータ経路を作ります。
通常の構造化データでは、ローカル変換によりサーバーへの定常的な転送をなくせるため、プライバシーを大きく改善できます。規制対象のデータセット、秘密、影響の大きいデータでは、組織が承認したツールとデータ処理方針に従います。
CSVとJSONはどのように違いますか?
CSVは、テキストフィールドと区切り文字で表形式のレコードを表します。JSONは、オブジェクト、配列、文字列、数値、真偽値、nullで値を表します。2つの形式は同じ構造や型を保存しないため、変換には判断が必要です。
| 特徴 | CSV | JSON | 変換時の判断 |
|---|---|---|---|
| 主な構造 | 行とフィールド | 入れ子のオブジェクトと配列 | 1行1オブジェクトか、別のスキーマかを選ぶ |
| フィールド名 | 多くの場合は最初の行 | オブジェクトのメンバー名 | 最初の行をヘッダーとするか決める |
| 型 | 解析時は通常テキスト | 文字列、数値、真偽値、null |
テキストを保持するか、型を推測する |
| 入れ子 | 一般的な入れ子モデルなし | 入れ子をネイティブに持つ | 入れ子の値を平坦化またはシリアライズする |
| 欠落データ | 空のフィールドまたは欠落列 | 欠落メンバー、空文字列、null |
方針を定義する |
| 区切り文字 | コンマ、タブ、セミコロンなど | 構文は句読点を使う | CSVの区切り文字を検出または選択する |
| 文字エンコード | 外部の合意が必要 | 交換時は通常UTF-8 | ソースを正しくデコードする |
| レコード順 | 行の順序 | 配列の順序を保持 | 意図的に保持または並べ替える |
RFC 4180は一般的なCSV形式とMIMEタイプを文書化します。この標準は、コンマ区切りのレコード、任意のヘッダー、二重引用符、エスケープされた引用符を説明します。実際のファイルは、タブ、セミコロン、別の改行、特別な規約を使うことがあります。
RFC 8259はJSON交換形式を定義します。JSONテキストはシリアライズされた値を含みます。オブジェクトは名前と値を使います。配列は順序付きの値を使います。JSON構文では、コメント、末尾コンマ、NaN、Infinityを許可しません。
変換で何が失われることがありますか?
変換では、型の意図、先頭ゼロ、精度、重複ヘッダー、入れ子構造、数式の意味、元の書式が失われることがあります。正しく解析できても、出力が業務上の意味を保持するとは限りません。
00123というCSVフィールドを考えます。郵便番号、識別子、数値のいずれかです。JSONの数値123に変換すると、先頭ゼロが失われます。1E10は、科学表記に見える識別子かもしれません。長い口座番号は、コンシューマーの正確な数値範囲を超えることがあります。
日付にも同じリスクがあります。01/02/03は、すべての国で一意の日付を示しません。コンバーターは黙って推測してはいけません。スキーマが形式を定義しない限り、曖昧な値を文字列として保持します。
空の値にも方針が必要です。空のCSVフィールドは、""、null、欠落メンバーになることがあります。これらの出力は同じではありません。空文字列は既知の空値を表すことがあります。nullは値がないことを示すことがあります。欠落メンバーは「不明」または「該当なし」を意味することがあります。
重複ヘッダーは、無効または損失のあるオブジェクト対応を作ります。1行にstatusという名前の列が2つある場合、通常のJSONオブジェクトは両方を同じ名前で確実に保持できません。列名を変更するか、ファイルを拒否するか、別のヘッダー一覧を持つ配列に行を対応付けます。
コンバーターはデータ型を推測すべきですか?
型推測は便利なJSONを作れますが、リスクを増やします。trueという文字列は回答または文字通りのラベルかもしれません。0007は識別子かもしれません。空白だけの値は、欠落データまたは意図的な空値かもしれません。
可能な場合は、スキーマ駆動の型を使います。各列を文字列、整数、10進数、真偽値、日付、タイムスタンプ、nullable値として定義します。推測せず、無効な入力を拒否します。変換が業務に影響する場合は、検査のために元のテキストを保持します。
スキーマがない場合、文字列を保持することが最も安全な既定値です。字句内容と先頭ゼロを保持します。後で検証済みの処理により、選択したフィールドを変換できます。
数値では、10進精度の扱いを決めます。JavaScriptの浮動小数点数は、すべての10進小数と大きな整数を正確に表しません。金融データと識別子には、10進ライブラリ、整数文字列、任意精度の型が必要なことがあります。
W3C Tabular Data Modelは、メタデータと型で表を注釈付けする方法を詳しく説明します。単純なコンバーターはCSVWメタデータを実装しない場合があります。このモデルは、スキーマのコンテキストが重要な理由を示します。
文字エンコードはどのように機能すべきですか?
システム間で交換するJSONはUnicodeを使い、通常はUTF-8です。CSVファイルは、UTF-8、UTF-16、Windowsコードページ、別の古いエンコードであることがあります。誤ったデコーダーでバイトを読むと、置換文字または変更されたテキストになります。
WHATWG Encoding Standardは、ブラウザーのラベルとデコード動作を定義します。Webで使われる古いエンコードの扱いを標準化します。エラーと置換の動作も説明します。
新しいエクスポートにはUTF-8を使います。RFC 3629はUTF-8をUnicode変換形式として定義します。UTF-8のCSVファイルには、UTF-8が必要としないバイト順マーカーが現れることがあります。パーサーが削除しない場合、一部のパーサーはマーカーを最初のヘッダーの一部として保持します。
変換前に、アクセント付きの名前、非ラテン文字、絵文字、通貨記号、組版用の句読点を確認します。その後、代表的な値を比較します。行数が同じでも、壊れた文字は検出できません。
エンコードが不明なら、作成者に確認するか、管理された検出を使います。自動検出は確率的です。短いファイルやほぼASCIIだけのファイルでは、もっともらしいが誤った結果になることがあります。
区切り文字と引用符はどのように機能しますか?
フィールド内のコンマには、通常、二重引用符が必要です。引用されたフィールド内の二重引用符は、通常、別の二重引用符でエスケープします。引用されたフィールドには改行を含められます。コンマで各行を分割するパーサーは、これらの有効なケースで失敗します。
このレコードは、追加のコンマを含みますが、3つのフィールドを含みます。
42,"Mumbai, Maharashtra","Approved"
このレコードは、2番目のフィールドに引用符を含みます。
43,"The value is ""ready""","Approved"
区切り文字、引用符、エスケープ、ヘッダー、改行を設定できる、検証済みのCSVパーサーを使います。任意のCSVに単純な正規表現を使わないでください。
一部の国では、コンマが小数点記号であるため、セミコロンを使います。タブ区切りデータには.tsvを使うことがあります。コンバーターは候補を検出できます。選択した区切り文字を表示し、ユーザーが修正できるようにします。
CSV数式インジェクションとは何ですか?
スプレッドシートアプリケーションは、特定の文字で始まるセルを数式として解釈することがあります。攻撃者がフィールドを制御できる場合、エクスポートしたCSVを開くことで数式や外部操作が実行されることがあります。動作はアプリケーションとユーザーの判断に依存します。
OWASPのCSVインジェクションガイドは、=、+、-、@で始まるセルが数式として解釈されることを説明します。区切り文字と改行によって、制御されたデータが新しいセルを開始することもあります。
CSVからJSONへの変換は、スプレッドシートの数式を実行しません。しかし、JSONからCSVへの後続エクスポートは、危険なセルを再び作ることがあります。数式の形を持つテキストを信頼できない入力として扱います。対象のスプレッドシートに適した出力方針を適用し、意味を保持します。
エスケープ戦略には欠点があります。先頭にアポストロフィを置くと、一部のアプリケーションで数式を防げます。ただし、保存されたテキストも変更し、別のコンシューマーでは見えることがあります。フィールドを引用符で囲むだけでは、常に十分ではありません。CSVを解析した後に、表計算ソフトが内容を評価することがあります。対象アプリケーションの最新のセキュリティ指針に従います。
検査のためだけに、知らないCSVをスプレッドシートで開かないでください。テキスト指向のパーサーとプレビューを使います。組織の方針に従って、外部リンクとアクティブな内容を制限します。
ブラウザーでの非公開処理には何が必要ですか?
信頼できるローカル手順には明確な境界が必要です。変換は、選択したファイルをローカルで読み、内容のアップロードを避け、出力をローカルで作り、テレメトリを説明する必要があります。アプリケーションは、制限的なセキュリティ方針と保守された依存関係を使う必要があります。
ユーザーにも責任があります。
- 信頼できるデバイスと対応ブラウザーを使います。
- 不要なページアクセスを持つ拡張機能を削除します。
- Webサイトの出所と転送の安全性を確認します。
- 機密データセットに共有または公共のデバイスを使いません。
- システムとブラウザーを最新に保ちます。
- ダウンロードした結果を承認された場所に保存します。
- 方針に従って一時コピーを削除します。
ページが必要なコードをすべて持っている場合だけ、ネットワーク切断が追加の安全性を作ります。すでに読み込んだ悪意のあるコードは削除しません。ローカルのマルウェア、拡張機能、画面キャプチャ、同期フォルダー、後のネットワークアクセスからも保護しません。
開発者ツールは、テスト中にリクエストを表示できます。観察は正式な保証ではありません。ファイルタイプ、エラー、時刻、設定、更新によってリクエストが変わることがあります。独立した検査、再現可能なビルド、セキュリティ制御、組織の承認は、より強い証拠を提供します。
CSVからJSONへの安全な手順
管理された変換では、次の手順を使います。
- ソースファイルを保護された作業場所へコピーします。
- 必要なら、名前、サイズ、信頼できるハッシュを記録します。
- 想定するエンコードと区切り文字を確認します。
- 最初の行がヘッダーを含むか決めます。
- 重複、空、予期しないヘッダーを確認します。
- 文字列を保持するか、スキーマに従う方針を選びます。
- 完全な変換の前に、代表的な行をプレビューします。
- CSV to JSONツールで変換します。
- 作成されたJSON構文を検証します。
- 行数と重要なフィールドを比較します。
- 結果を承認された場所に保存します。
- 保持規則に従ってソースを保持または削除します。
プレビューには、最初と最後の行、引用されたレコード、複数行フィールド、非ASCII文字、空の値、最大長の値を含めます。大きなデータにはランダムサンプルが役立ちます。対象を絞った境界ケースは、より良いカバレッジを提供します。
JSON出力をどのように検証しますか?
構文から始めます。JSON Validator(英語ページ)は、不正なJSONを検出できます。構文検証は文法を確認します。想定するフィールド、型、範囲、関係は確認しません。
次に構造を検証します。JSONまたはアプリケーションのスキーマは、名前、型、形式、境界、入れ子を要求できます。すべての行が配列要素になったことを確認します。解析エラーでレコードが失われていないことを確認します。
読みやすい検査にはJSON Formatterを使います。書式化は空白を変えますが、データの意味は変えません。見た目のよいインデントから正しさを判断しません。
信頼できるサンプルがある場合、JSON Comparator(英語ページ)で想定出力と実際の出力を比較します。メンバー順、配列順、数値表記、欠落メンバーが重要か決めます。
検証には次を含めます。
| 確認 | 推奨される証拠 |
|---|---|
| 行の保持 | ソースの行数がJSONの長さと一致する |
| ヘッダーの対応 | 想定キーが存在し、重複が解決されている |
| 文字の完全性 | 代表的なUnicode値が一致する |
| 型の保持 | 識別子がゼロと長い桁を保持する |
| 欠落値 | 空、null、欠落が方針に従う |
| 複数行フィールド | 改行が1つの値に留まる |
| 数式の形を持つテキスト | 方針が潜在的なアクティブセルを記録する |
| ファイルの完全性 | 任意のハッシュが検査済みソースを識別する |
重要な移行では、自動アサーションを作ります。件数、必須キー、一意の識別子、合計、最小および最大の日付、既知のレコードを検証します。集計値をソースシステムと比較します。
JSONからCSVへの安全な手順
逆方向の変換には表形式が必要です。フラットなオブジェクトのJSON配列は、自然に行へ対応付けられます。入れ子のオブジェクトと配列には、平坦化の方針が必要です。
address.cityのように、ドットでパスをつなげられます。入れ子の値をJSONテキストとしてシリアライズできます。関連するCSVファイルを複数作成できます。各判断は、再インポートと人による編集に影響します。
安定した列順を選びます。欠落メンバーの表示方法を決めます。選んだCSV規則に従ってフィールドを引用符で囲みます。スプレッドシートを使う前に、数式インジェクション対策を適用します。UTF-8でエクスポートし、バイト順マーカーがあるか示します。
すべてのメンバーが最初の要素に現れると仮定しないでください。許可されたスキーマまたはすべてのレコードを確認します。そうしないと、後のフィールドが失われることがあります。非常に大きなファイルでは、すべてのオブジェクトを先に読み込まず、スキーマを使って行を転送します。
大きなファイルの性能とメモリ
ブラウザーのメモリには制限があります。数ギガバイトのファイルを読み、オブジェクトに解析し、完全な別コピーをシリアライズすると、ファイルサイズの数倍が必要になることがあります。ページが応答しなくなったり、プロセスが終了したりすることがあります。
拡張可能なコンバーターは、ストリームまたはブロックで読み、レコードを段階的に解析し、出力も段階的に書けます。改行を含む引用フィールドは、ブロック境界を難しくします。パーサーはブロック間で状態を保持する必要があります。
ファイルが限界を超える場合は、デスクトップツール、検証済みのコマンドライン処理、管理されたサーバー処理を使います。「アップロードなし」にはブラウザーは必要ありません。ローカルスクリプトもデータをデバイス内に保持し、ストリーミングと優れた検査制御をサポートします。
代表的で機密でないファイルで性能をテストします。メモリと出力サイズを監視します。インターフェースで最大入力サイズを定義します。ファイル選択ダイアログが受け入れるからといって、すべてのファイルをサポートすると約束しないでください。
変換でよくある間違い
間違い1:コンマで行を分割する
引用されたコンマと複数行フィールドでは、単純な分割は無効です。CSVパーサーを使います。
間違い2:見かけ上の数値フィールドをすべて推測する
識別子、郵便番号、口座参照、電話番号は、ゼロまたは精度を失うことがあります。スキーマが別の指示をしない限り、文字列を保持します。
間違い3:最初の行をヘッダーと仮定する
ヘッダーがないファイルもあります。表の前にタイトル行があるファイルもあります。プレビューを表示し、ヘッダーを明示的に選びます。
間違い4:重複ヘッダーを無視する
JSONオブジェクトは、同じ名前で2つの値を確実に保持しません。重複を拒否するか、文書化された規則で名前を変更します。
間違い5:ローカル処理だけで完全なプライバシーを主張する
ローカル処理は定常的な転送を減らします。侵害されたデバイス、ブラウザー、拡張機能、依存関係、保存場所は保護しません。
間違い6:JSON構文だけを検証する
有効なJSONにも、誤った行、壊れたテキスト、変更された識別子、誤った型が含まれることがあります。業務スキーマを検証し、ソースを比較します。
間違い7:信頼できない出力をスプレッドシートで開く
数式の形を持つフィールドは、表計算アプリケーションでアクティブになることがあります。安全なエクスポート方針を適用し、対象環境を確認します。
オンラインツールを避けるべき場合
ファイルに認証情報、暗号鍵、医療データ、規制対象の金融データ、未公開の業務情報、顧客の非公開データセット、その他の制限された内容がある場合、未承認の公開ツールを避けます。組織が承認した環境を使います。
変換を再現可能にする必要がある場合も、一度限りの対話型変換を避けます。バージョン管理したコード、テスト、ログ、ハッシュを持つ検証済みスクリプトは、より強い移行証拠を提供できます。
公開ブラウザーツールは、非機密データ、サンプル、学習、診断、文書化された境界内の透明な変換に適しています。構造を診断するときは、実データを合成例に置き換えます。
よくある質問
ブラウザーのCSVコンバーターはファイルをアップロードしますか?
必ずしもアップロードする必要はありません。ブラウザーは選択したファイルをローカルで読み、変換できます。具体的なアプリケーションの説明と動作を確認します。すべてのコンバーターが同じだと仮定しません。
ブラウザー処理は完全に非公開ですか?
機能だけで完全なプライバシーを証明することはできません。ローカル処理はサーバーへの転送を減らします。デバイスの安全性、拡張機能、読み込んだコード、テレメトリ、ダウンロード、コピー、方針も重要です。
CSVの数値をJSONの数値に変換する必要がありますか?
スキーマが数値として識別し、コンシューマーが範囲と精度を保持する場合だけ変換します。識別子と曖昧な値は文字列として保持します。
空のCSVフィールドはどのように変換しますか?
文書化された方針を選びます。空文字列、null、欠落メンバーは別の意味を持ちます。常に同じ規則を適用します。
CSVはフィールド内に改行を含められますか?
はい。一般的なCSV規則は、引用されたフィールド内の改行を許可します。適合するパーサーは、レコード内の1つのフィールドの一部として扱う必要があります。
最初のJSONキーに奇妙な文字がある理由は何ですか?
CSVファイルがバイト順マーカーで始まり、パーサーがそれを最初のヘッダーに保持した可能性があります。正しいデコーダーを使い、適切ならマーカーを削除します。
書式化したJSONは、コンパクトなJSONより有効ですか?
いいえ。文字列外の空白はJSONの値を変えません。どちらの形式も有効になれます。構文にはバリデーターを使い、意味にはスキーマを使います。
入れ子のJSON文書をCSVファイルに変換できますか?
はい。ただし、平坦化の方針が必要です。入れ子の配列は、繰り返し行、シリアライズしたセル、別の関係テーブルになります。判断を文書化します。
プライバシーと検証の最終規則
ローカル変換は定常的な転送をなくし、通常の処理をデバイス内に保持できます。この設計をプライバシー制御として扱います。完全なセキュリティ保証として扱いません。
CSV方言、エンコード、ヘッダー規則、型の方針、空値の方針、出力スキーマを定義します。その後、構文、件数、Unicode、識別子、境界ケース、数式の形を持つフィールドを検証します。結果が検査に合格するまでソースを保持します。