CSVにおける数値と文字列の型推論
CSVからJSONへの変換時の数値型検出の処理方法。自動検出ルール、精度の落とし穴、数値を文字列のまま保持すべきケースを解説。
Data Types
詳細な説明
型推論:数値 vs 文字列
CSVは型なしフォーマットであり、すべての値は文字列です。JSONに変換する際、"42"(文字列)として出力するか42(数値)として出力するかを決定する必要があります。
自動検出ルール
典型的な型推論エンジンは以下のチェックを順番に適用します:
- 空文字列 →
nullまたは"" - Boolean → 値がちょうど
"true"または"false"の場合、booleanに変換 - 整数 → 値が
/^-?\d+$/に一致し安全な範囲内の場合、数値に変換 - 浮動小数点 → 値が
/^-?\d+\.\d+$/に一致する場合、数値に変換 - その他 → 文字列のまま保持
数値推論すべきでないケース
特定のフィールドは数値に見えますが文字列のまま保持する必要があります:
- 郵便番号:
"01234"(先頭のゼロが重要) - 電話番号:
"0035512345678" - IDフィールド:
"000042"(固定幅識別子) - クレジットカード番号: JavaScriptの
Number.MAX_SAFE_INTEGERを超過 - バージョン番号:
"1.2.3"は浮動小数点数ではない
ベストプラクティス
デフォルトで文字列にし、ユーザーがカラムごとに型推論をオプトインできるようにします。これにより暗黙のデータ破損を防ぎ、コンシューマーに型処理の明示的な制御を与えます。
ユースケース
口座番号やルーティング番号が純粋に数値であるにもかかわらず文字列のまま保持する必要があり、取引金額は計算のために実際の数値である必要がある銀行取引CSVエクスポートを変換する場合。