私のアプリはいくつかのcsvデータをインポートし、配列を作成してシリアル化し、データベースフィールドに保存します。毎回インポートされるデータの構造が異なるため、シリアル化形式で保存します。3列の場合もあれば、10列の場合もあります。
[["fruit"、 "price"、 "weight"]、["Apple"、1.23、4.5]、["Orange"、5.2、3.3]]
インポートされたデータには文字列を引用符で囲み、数値を引用符で囲んでいないため、インポート中に各要素のタイプを保持できます。
しかし、(データベースフィールドに保存するために)シリアル化すると、ActiveSupport::JSON.encode(csv_data)
各要素が文字列として保存されます
[["fruit"、 "price"、 "weight"]、["Apple"、 "1.23"、 "4.5"]、["Orange"、 "5.2"、 "3.3"]]
そのため、逆シリアル化すると、数値は文字列に変換されますが、後処理のために数値として必要になります。
問題は、各データのインポートが異なることです...すべて数値である場合もあれば、最初の列が文字列である場合もあり、2列または3列が文字列である場合もあります。
JSONを使用するかどうかは関係ありません。データをエンコードしてデコードする方法が必要なだけなので、デコード中に「タイプ」を失うことなく、データをデータベースフィールドに詰め込むことができます。
JSONの代わりにある種のxmlメソッドを使用する必要がありますか?