2012-07-28 55 views
-3

我有一个从特定的遗留程序序列化的对象,几乎没有类型的文档。从Ruby中反序列化一个未知的对象

我想数据提取到一个可读结构到C#

我试着:

  • 打开文件中的一个十六进制编辑器和分析的内容;他们是乱码,而不是很清楚
  • 没有太多的描述,大概压缩

我所知道的:

  • 什么文件表示
  • 我可以加载(只要我还是要说变化t打破任何校验和或任何东西)到遗留应用程序
  • 它已被串行化红宝石
+2

'有没有更好的方法来处理这个,然后我现在呢?'我无法理解你的*方法*来提出一个更好的方法。你有什么尝试?为什么耗时?数据是什么?什么是格式?没有机会直接在C#中读取? – 2012-07-28 20:55:55

+0

让我更清楚一点。 我已经做了这个文件的各种副本,并尝试逐个编辑值并在文件中找到它们的偏移量。但是,一些数据变得非常复杂;并有很多不同的变量。有问题的数据是RPG游戏的数据文件。正如我所说的,格式是经过一些研究后的序列化Ruby结构或类 - 但除此之外,我不确定它是什么。 我一直在尝试重建Ruby中的类,所以我可以序列化它回来..然后将其保存到我想要的格式。不过,也许我可以直接读取二进制流。 – 2012-07-28 21:04:40

+0

请参阅黄金法则[here](http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx) – 2012-07-28 21:27:26

回答

0

您不应该使用C#来反序列化文件。你应该unmarshal the data in a Ruby program。然后,您的Ruby程序可以用C#可以轻松读取的语言中性格式(即json,xml等)发出它。

+0

所以我最好的选择是找到这个Ruby类所暴露的所有字段,从它们中构建一个类,然后尝试去除它。 – 2012-07-28 22:41:23

+0

@Vaughan,这是我的想法。如果您有权访问正在创建文件的游戏,则编组文件中表示的Ruby类可能实际上可供您使用。如果你能找到这些,工作变得更容易。 – 2012-07-29 00:06:12