CSV JSON 変換ガイド|よくある落とし穴と対策
CSVは表計算ソフトの言葉、JSONはWebアプリやAPIの言葉です。商品リストの取り込み、データベースへの初期データ投入、スクリプトへの入力など、遅かれ早かれ一方から他方へデータを移す場面がやってきます。変換は簡単そうに見えますが、いくつかの細かな点で、データが正しく届くかどうかが決まります。
CSVがJSONになる仕組み
CSVファイルは表です。通常、1行目に列名が入っています。
id,name,city,zip
1,Ana,Vilnius,01100
2,Ben,Austin,73301
最も一般的なJSONの形はオブジェクトの配列です。1行につき1つのオブジェクトで、列名がキーになります。
[
{ "id": 1, "name": "Ana", "city": "Vilnius", "zip": "01100" },
{ "id": 2, "name": "Ben", "city": "Austin", "zip": "73301" }
]
CSVをJSONに変換するツールは、初期設定でこの形を出力します。
落とし穴1:数値に見えて数値ではないもの
idは数値になったのに、zipは文字列のままになっていることに注目してください。これは意図的なものです。郵便番号、電話番号、口座番号、商品コードは、0から始まることがよくあります。01100を数値として扱うと、黙って1100に変わってしまいます。何か月も気づかれないこともあるバグです。
FileCraftyは列ごとに型を判定します。列のすべての値がきれいな数値である場合にだけ、その列を数値にします。1つでも先頭にゼロが付いていたり数値でなかったりすれば、列全体が文字列のままになります。
落とし穴2:区切り文字の違い
「カンマ区切り」のファイルが、必ずしもカンマで区切られているとは限りません。ヨーロッパの多くの地域設定のExcelでは、カンマが小数点として使われるため、CSVをセミコロン区切りで保存します。タブ区切り(TSV)のファイルもよく見かけます。変換ツールは区切り文字を自動で判別するので、1;Ana;Vilniusも正しく分割されます。
落とし穴3:値の中のカンマや引用符
"Smith, John"のような値はカンマを含むため、CSVでは引用符で囲まれます。値の中の引用符は2つ重ねて書きます:"He said ""hi"""。単純にカンマで分割するだけの変換では、こうした行が壊れてしまいます。変換ツールに組み込まれているようなきちんとしたCSVパーサーなら、引用符で囲まれたフィールドや値の中のカンマ、さらにはセル内の改行まで正しく処理できます。
落とし穴4:空のセル
空のセルは「値なし」の意味にも「空の文字列」の意味にもなります。JSONではこの2つは別物で、nullと""です。取り込み先のシステムがどちらを想定しているか確認し、変換後にいくつかのレコードをチェックしましょう。
逆方向の変換
APIのレスポンスを表計算データに戻したいときは?JSONをCSVに変換なら、ネストしたオブジェクトをaddress.cityのような列に展開できます。JSONをExcelに変換なら.xlsxファイルを直接作れます。使う前にJSONをチェック・整形したいときは、JSON整形に貼り付けてください。構文エラーがあれば、その行と列を正確に示してくれます。
データは外部に送信されません
顧客リストやエクスポートしたデータには、個人情報が含まれていることがよくあります。変換ツールはすべてブラウザの中で動作するため、ファイルがサーバーにアップロードされることはありません。
まとめ
CSVをJSONに変換にファイルをドロップし、プレビューを確認してダウンロードするだけです。先頭のゼロ、セミコロン区切り、引用符内のカンマも自動で処理されます。