我的应用程序导入一些csv数据,我构建一个数组,序列化它,并将其保存在数据库字段中。我将其保存为序列化形式,因为每次导入的数据都有不同的结构...有时是3列,有时是10列等。
[[“水果”,“价格”,“重量”], [“Apple”,1.23,4.5], [“橙色”,5.2,3.3]]
导入的数据在字符串周围有引号,没有数字引号,因此在导入过程中我可以保留每个元素的类型。
但当我使用ActiveSupport::JSON.encode(csv_data)
对其进行序列化(以保存在数据库字段中)时
每个元素都保存为字符串
[[“水果”,“价格”,“重量”], [“Apple”,“1.23”,“4.5”], [“橙色”,“5.2”,“3.3”]]
因此,当我对其进行反序列化时,数值已转换为字符串,但我需要将它们作为数字进行后处理。
问题是,每个数据导入都是不同的...有时它;所有数字,有时第一列是字符串,有时2或3列可能是字符串。
我不关心我是否使用JSON - 我只需要一种方法来对数据进行编码和解码,这样我就可以将其填充到数据库字段中,而不会丢失'type'来解码。
我应该使用某种xml方法而不是JSON吗?
答案 0 :(得分:3)
Marshal救援!
tmp = [["fruit", "price", "weight"], ["Apple", 1.23, 4.5], ["Orange", 5.2, 3.3]]
dmp = Marshal.dump(tmp)
p Marshal.load(dmp)
# => [["fruit", "price", "weight"], ["Apple", 1.23, 4.5], ["Orange", 5.2, 3.3]]