我正在处理来自MySQL数据库的一些序列化数据,我需要使用Ruby对其进行反序列化(序列化数据用于为数据库查询构建WHERE子句)。 PHP使用unserialize()
方法将其转换为数组; Ruby的等价物是什么?
有问题的数据看起来像这样,如果有帮助的话:
a:2:{s:5:"Lists";a:1:{i:0;s:2:"11";}s:5:"Rules";a:1:{i:0;a:3:{s:4:"type";s:5:"group";s:9:"connector";s:3:"and";s:5:"rules";a:1:{i:0;a:3:{s:4:"type";s:4:"rule";s:9:"connector";s:3:"and";s:5:"rules";a:3:{s:8:"ruleName";s:2:"21";s:12:"ruleOperator";s:10:"isnotempty";s:10:"ruleValues";a:1:{i:0;s:0:"";}}}}}}}
答案 0 :(得分:5)
我想完全相同的是this。您还可以查看Ruby的Marshall Class,特别是Marshal.load。
答案 1 :(得分:0)
看看Ruby的Marshal Class。
来自文档:
编组库转换 将Ruby对象集合成一个 字节流,允许它们 存储在当前活动的外部 脚本。随后可以是这个数据 阅读和原始对象 重构。编组数据有 存储的主要和次要版本号 以及对象信息。
当然这是一条双向的街道,你只能使用非Marshalled,Marshaled红宝石物体。
答案 2 :(得分:0)
如果是XML,那就是Hash.from_xml
方法。