2

我的应用程序导入了一些 csv 数据,然后我构建了一个数组,对其进行序列化,并将其保存在数据库字段中。我以序列化形式保存它,因为每次导入的数据具有不同的结构......有时是 3 列,有时是 10 列,等等。

[[“水果”, “价格”, “重量”], [“苹果”, 1.23, 4.5], [“橙子”, 5.2, 3.3]]

导入的数据在字符串周围有引号,在数字周围没有引号,因此在导入期间我能够保留每个元素的类型。

但是当我序列化它(保存在数据库字段中)时,ActiveSupport::JSON.encode(csv_data) 每个元素都保存为字符串

[[“水果”、“价格”、“重量”]、[“苹果”、“1.23”、“4.5”]、[“橙子”、“5.2”、“3.3”]]

因此,当我对其进行反序列化时,数值已转换为字符串,但我需要将它们作为数字进行后处理。

问题是,每个数据导入都是不同的……有时它都是数字,有时第一列是字符串,有时 2 或 3 列可能是字符串。

我不在乎我是否使用 JSON——我只需要一种对数据进行编码和解码的方法,这样我就可以将其填充到数据库字段中,而不会在解码期间丢失“类型”。

我应该使用某种 xml 方法而不是 JSON 吗?

4

1 回答 1

3

元帅来救援!

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]]
于 2012-04-11T08:34:12.900 回答