執行代碼的一部分,我有非常具體的情況紅寶石:如何從加載文件
我已經分居文件使用JSON條目:
{
"field": "value",
"field2": "#{Time.now + (24*60*60)).to_i.to_s}"
}
後,我用IO.read(文件)加載此內容我想執行代碼裏面的日期定義在該值
如何做到這一點?
執行代碼的一部分,我有非常具體的情況紅寶石:如何從加載文件
我已經分居文件使用JSON條目:
{
"field": "value",
"field2": "#{Time.now + (24*60*60)).to_i.to_s}"
}
後,我用IO.read(文件)加載此內容我想執行代碼裏面的日期定義在該值
如何做到這一點?
對方回答是更快
YAML.load(YAML.dump(hash))
我想你正在尋找的是Kernal#eval
方法。這將運行包含在一個字符串中的代碼。
eval('2 + 2') # => 5
您可能必須先運行正則表達式。看一個例子here at Rubular。
/#{([^}]*)}/
一切都成定局。
json["field2"].gsub!(/#\{([^}]*)\}/) { eval($1) }
如果你想在哈希的每一個值做到這一點。
json.each_value do |value|
v.gsub!(/#\{([^}]*)\}/) { eval($1) }
end
參考文獻:
我會做如下使用YAML
:
require 'yaml'
require 'time'
h = {
"field" => "value",
"field2" => "#{(Time.now + (24*60*60)).to_i.to_s}"
}
p YAML.load(YAML.dump(h))
# => {"field"=>"value", "field2"=>"1377092990"
require 'yaml'
require 'time'
h = {
"field" => "value",
"field2" => "#{Time.now}"
}
p YAML.load(YAML.dump(h))
# => {"field"=>"value", "field2"=>"2013-08-20 19:23:12 +0530"}
你知道,當我在代碼中定義字符串時,一切正常,但問題是當我的字符串(json)從文件加載時 – claveesh
太棒了!非常感謝你:) – claveesh