需要替代eval

时间:2017-08-17 17:36:05

标签: ruby-on-rails ruby

我有一个字符串

string = '{"a" => [{"b" => 2}]}'

eval(string) 
# => {"a" => [{"b" => 2}]}

我需要替代方法才能获得类似{"a" => [{"b" => 2}]}

的输出

1 个答案:

答案 0 :(得分:0)

将数据存储在将以编程方式解析的字符串中时,最好使用标准化的数据交换格式(如JSON)格式化这些字符串。格式化为JSON的字符串如下所示:

{"a": [{"b": 2}]}

如果您可以控制如何在Excel中保存数据,则应确保将其保存为JSON格式。如果由于某种原因,您不允许在excel中修改数据的格式,那么您的下一个最佳选择是在解析之前将其转换为JSON。

幸运的是,数据已经非常类似于JSON了。唯一的区别是JSON使用:而不是=>,所以你可以这样做:

require "json"
string = '{"a" => [{"b" => 2}]}'.gsub("=>", ":")
data = JSON.parse string
p data # => {"a" => [{"b" => 2}]}