データの構造から考える
JSONはオブジェクト、配列、文字列、数値、真偽値、nullを表します。CSVは項目とレコードからなる表であり、同じ型の仕組みを備えていません。一定の行列にまとめたいならCSV、入れ子のオブジェクトや長さの異なるリストがあるならJSONが適しています。見た目がきれいな表でも、元の関係がすべて残っているとは限りません。
識別子は文字列として保持する
00127というコードは識別子であり、必ずしも数値127ではありません。文字列として保存し、表計算の列も文字列として読み込みます。電話番号や非常に大きな数値IDにも注意してください。通常のJavaScript数値では、9,007,199,254,740,991を超える整数をすべて正確には表せません。精度が重要なら引用符付きの文字列か、必要な数値範囲に明示対応したツールを使います。
CSVの解析はパーサーに任せる
引用符内のカンマはデータであり、列の区切りではありません。引用符付き項目には改行も含められ、内部の二重引用符にはエスケープが必要です。単に各行をカンマで分割するだけでは不十分です。変換前に区切り文字、見出し行、列名の重複、各レコードの項目数を確認しましょう。検証に失敗した行を黙って捨てないでください。
入れ子の値の対応方法を決める
複数商品を含む注文には、明確な書き出し規則が必要です。注文ID付きの商品テーブルを別に作る方法や、リストを1セル内のJSON文字列として残す方法があります。キーに区切り文字が含まれると、平坦化した名前が紛らわしくなることがあります。対応規則を記録し、再読み込み時にも同じ規則を使います。オブジェクトのキーの整形・並べ替えと、配列の順序変更は別物です。
まず少量で往復変換する
代表的なサンプルを変換して読み込み直し、件数と主要な値を比較します。アクセント文字、空文字列、null、引用符、複数行テキストを含めましょう。信頼できないCSVを表計算で開く場合は、数式として解釈されそうなセルを確認し、文字列読み込み設定を使ってください。元ファイルと変換設定を保管します。こうした確認で、ダウンロード成功の表示だけでは分からない意味の変化を見つけられます。
www.rfc-editor.org · developer.mozilla.org
