如何在Io中反序列化对象?

3

我已经在Object对象中找到了serializedjustSerialized方法,已成功将对象序列化为文件,但我找不到匹配的deserialize方法。

是没有这个方法还是我太蠢找不到呢?


迄今为止还没有听说过iolanguage。这看起来很有趣。 - Aravind Yarram
1
看一下这个文件。我认为序列化过程会生成重新创建对象的代码。你只需要读取并“eval”结果即可。不过我不确定。 - nimrodm
1个回答

5
我认为doStringdoMessage应该能满足您的需求(尽管我不能确认,因为我没有在这台机器上运行Io)。
例如:
doString( yourSerializedString )

或者

doMessage( yourSerializedString asMessage )


更新 - 现在可以确认doStringdoMessage确实有效。完整示例如下:

Foo.io

Foo := Object clone do (
    name ::= nil
)

serialize.io

doRelativeFile("Foo.io")

baz := Foo clone setName("baz")

// serialize "baz" object to file
File with("serialized.data") open write(baz serialized) close

restore_object.io

doRelativeFile("Foo.io")

baz := doString(
    File with("serialized.data") open readLines join
)


实际上,您还可以使用doRelativeFiledoFile对对象进行反序列化:

baz := doRelativeFile("serialized.data")

因为序列化数据只是Io代码。
/I3az/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接