我有复杂的数据结构,如下所示:OrderedHash,键是日期,值是有序的哈希,它使用字符串键保存整数。我需要序列化那些以便存储在db中。但是在to_yaml / YAML.load数据有时被破坏之后 - 一些二级哈希被第一级替换,反之亦然。但有时它并没有被打破。
yaml表示看起来像这样
此* id010 /& id010部分随机插入yaml代码的不同位置。我认为这是错误的原因。
有没有人知道yaml序列化有什么问题? ruby 1.8.6,升级到1.9不是一个选项:(
答案 0 :(得分:0)
很可能有一个错误。我相信YAML引擎Ruby 1.8使用的是Syck
,这个代码是由_why多年前创建的。从那时起,代码就没有得到妥善维护。
Ruby 1.9应该使用一个名为Psych
的新引擎,但我不确定它与Ruby 1.8的兼容性。
在Github上,我还找到了另一种选择,看起来对你来说可能值得一试:
https://github.com/cesare/ruby-libc-libyaml
Syck (您可能会尝试使用此版本,因为它看起来像是半维护的): https://github.com/indeyets/syck
心理(您也可以尝试看看它是否在1.8上运行):
https://github.com/tenderlove/psych
修改强>
也许JSON也可以替代你?看看to_json
方法,看看它是否可以用于您的目的,并且可能以这种方式绕过YAML问题。
答案 1 :(得分:0)
我的看法是id010在那里,因为你可能有某种递归/自引用结构,这就是处理它的方法。