Рубиновый эквивалент функции PHP "unserialize"? - PullRequest
2 голосов
/ 17 ноября 2009

Я работаю с некоторыми сериализованными данными из базы данных 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:"";}}}}}}}

Ответы [ 3 ]

5 голосов
/ 17 ноября 2009

Я думаю, точный эквивалент будет это . Вы также можете проверить Ruby's Marshall Class , в частности Marshal.load.

0 голосов
/ 17 ноября 2009

Если это XML, есть метод Hash.from_xml.

0 голосов
/ 17 ноября 2009

Посмотрите на Руби Класс маршала .

Из документов:

Библиотека маршалинга преобразует коллекции объектов Ruby в поток байтов, позволяющий им быть хранится вне текущего активного скрипт. Эти данные могут впоследствии быть читать и оригинальные объекты восстанавливали. Marshaled данные сохраняются основные и вспомогательные номера версий вместе с информацией об объекте.

Конечно, это улица с двусторонним движением, вы можете только немаршал, рубиновые объекты Маршалед.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...