我有这个YAML字符串:
---
lease: 2014-09-26 05:20:39.616606000 Z
createtime: 2014-09-20 05:20:39.616606000 Z
leased_at: 2014-09-23 00:22:37.052173269 +08:00
我的ruby版本很旧,但我无法升级它,我的版本是:
ruby 1.9.1p376 (2009-12-07 revision 26041) [i686-linux]
当我尝试使用YAML.load
来解析上面的字符串时:
YAML.load(str) # where str is above string
我收到以下错误:
irb(main):028:0> YAML.load(str)
RangeError: bignum too big to convert into `long'
from /build/toolchain/lin32/ruby-1.9.1-p376/lib/ruby/1.9.1/yaml.rb:133:in `utc'
from /build/toolchain/lin32/ruby-1.9.1-p376/lib/ruby/1.9.1/yaml.rb:133:in `node_import'
from /build/toolchain/lin32/ruby-1.9.1-p376/lib/ruby/1.9.1/yaml.rb:133:in `load'
from /build/toolchain/lin32/ruby-1.9.1-p376/lib/ruby/1.9.1/yaml.rb:133:in `load'
from (irb):28
我认为问题是那些时间包含太长的毫秒部分。鉴于我无法升级我的ruby,如何成功解析YAML字符串?
答案 0 :(得分:0)
您可以直接在YAML字符串上使用regexp以匹配您的时间模式并截断毫秒数。
有关红宝石中regexp的更多信息:http://ruby-doc.org/core-2.1.1/Regexp.html