CSVをJSONオブジェクト配列に変換する
- CSV→JSONを選択し、コンマ・セミコロン・タブのうち実際の区切り文字を選びます。
- 最初の行に列名を持つデータを貼り付けるか、UTF-8ファイルをインポートします。
- 変換を押して結果のキーと値を確認します。
- JSONをコピーするか、ファイルとしてダウンロードします。
最初の行の列名は空でも重複もできません。すべての行の列数は最初の行と同じでなければなりません。このツールは、数値、日付、ブールを自動的に推定せずにCSV値を文字列として保持します。前後のスペースも値の一部です。
id,name
001,Alice
002,Bob最初のデータ行の結果は次のとおりです。
{"id":"001","name":"Alice"}空のセルは空の文字列になります。 001のようなコードを数字に置き換えると、前のゼロが消えるので、識別子は文字列のままにするのが適しています。 JSONファイル内の文字列値も他のプログラムで再変換される可能性があるため、最終処理ルールを確認してください。
カンマ・二重引用符・セル内の改行処理
CSVでは、値自体にカンマや改行がある場合は二重引用符で囲み、値の中の二重引用符は2回少ない方法が広く使われています。たとえば、以下のデータは2つの列で、名前の値はAlice、Kimです。
id,name
001,"Alice, Kim"「He said」「Hello」」は、He said 「Hello」と呼ばれる1つのセルを表す。引用符内の改行は同じセルに残り、引用符の外側の改行は次の行として扱われます。したがって、行単位で最初に切り捨ててカンマで分割するという単純な方法では、このようなデータを正確に読みにくくします。
このツールはCRLF・LF・CR行の区切りを読み込み、最後の行末の改行一度は追加の空行にはしません。中間の空行はレコードとして扱われるため、列数が異なるとエラーが発生します。閉じる引用符の後のスペースなど、厳密な入力規則に合わない文字は拒否されます。 TSVとセミコロンの区別も同じ引用符規則を適用するこのツールのサポート方式であり、すべてのプログラムのTSV方言と同じであるという意味ではありません。
注: RFC 4180のCSV形式の説明。この文書は、一般的に使用されるCSV慣行をまとめた情報文書です。
JSONをCSVとして保存すると、列と空の値はどうなりますか?
入力はオブジェクトで構成された配列でなければなりません。たとえば、[{"id":"001","active":true},{"id":"002","note":"memo"}] のように入力します。すべてのオブジェクトのキーを集めて列を作成し、JavaScriptでキーを列挙する順序に基づいて最初に会ったキーシーケンスを使用します。整数型のキーは、通常の文字列キーと順序が異なるように列挙できます。
ないキーと null は両方とも空セルに出力します。空の文字列も空のセルで表されるため、CSVだけでこのセットを区別して復元することはできません。ブールは true・false テキストで、数字は数字の文字列表現でエクスポートします。 CSVをJSONに変換すると、すべての値が文字列であるため、元のデータ型を自動回復することはありません。
ネストされたオブジェクトと配列は拒否します。アドレスオブジェクトをaddress.cityのような列に展開するルールは、データによって異なり、自動的には決まりません。 JSONはJavaScriptの数字で読み取られるため、大きな数字や少数の精度が変わることがあります。安全な整数の範囲外の整数値は拒否され、長い注文番号などの識別子は最初から二重引用符で囲まれた文字列として渡されます。 JSONの重複キーはパーサーに最後の値が残る可能性があるため、ソースをアーカイブしてください。
エクセルハングル・UTF-8 BOMと数式解析オプション
ファイル入力はUTF-8のみをサポートします。 CP949・EUC-KRなど他のエンコーディングファイルは、まずUTF-8で用意してください。 CSVダウンロードのBOMオプションは、ファイルの前にUTF-8表示バイトを追加します。プログラムによっては、文字エンコードの判別に役立ちますが、すべてのインポート設定を解決するわけではありません。結果の画面とコピーにBOMを入れず、JSONダウンロードにも入れません。
CSVは、セルのデータ型、色、フォント、または複数のシートを保存するXLSXファイルではありません。スプレッドシートで開くと、001が数字1に変わるか、日付のように解釈される可能性があります。 「識別子」列は、プログラムのインポート画面でテキストとして指定し、実際の結果を確認してください。
デフォルトでオンになっている一重引用符オプションは、数式のように始まる文字列と列名の前に一重引用符を付けます。等号・プラス・減算・ゴルバンなどで始まる文字列の数式解析リスクを減らすための処理であり、実際のデータを変更します。数値型の負数は文字列とは異なる方法で処理されます。すべてのスプレッドシートと再保存プロセスの安全性を保証するわけではありません。原文のままエクスポートする必要がある場合は、オプションの影響を理解してから解放してください。
セキュリティ注: OWASP CSV Injection.
容量制限とエラーが発生したときに確認する順序
入力はUTF-8基準2MiB、データは10,000行・100列、出力は8MiB以下です。 JSONは各行にキー名を繰り返すので、CSVより大きくなる可能性があります。出力制限にかかる場合は入力を分割してください。データは現在のブラウザで処理され、更新されると入力と結果が消えます。
列数のエラーは、区切り文字が正しいか、カンマ付きの値が引用符で囲まれているか、空白行が挟まれていることを確認してください。 JSON構文エラーは、JSONクリーンアップツールで確認できます。変換に成功したということは、APIの必須フィールドや業務ルールまで検証したという意味ではありません。オリジナルを別々に保管し、行数・列数・代表値で結果を確認してください。
よくある質問
CSVの数字をJSON数字に自動的に変換しますか?
いいえ。すべてのセルを文字列として保持します。 001 同じ識別子や長い数値文字列がランダムに変わることを避けるための方式です。
Excel XLSXファイルもアップロードできますか?
サポートしていません。スプレッドシートから必要なシートをUTF-8 CSVにエクスポートしてから使用してください。
CSVとJSONを往復すると全く同じデータですか?
必ずしもそうではありません。 null・なしキー・空文字列の区切りとJSONデータ型はCSV往復だけでは復元されません。一重引用符オプションをオンにすると、対応する文字列も変更されます。