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

Kut*_*tzi 3 serialization iolanguage

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

没有,或者我找到它太愚蠢了?

dra*_*tun 5

我认为doStringdoMessage应该做你需要的(虽然我现在无法确认这一点,因为我没有在这台机器上运行Io).

例如:

doString( yourSerializedString )
Run Code Online (Sandbox Code Playgroud)

要么

doMessage( yourSerializedString asMessage )
Run Code Online (Sandbox Code Playgroud)


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

Foo.io

Foo := Object clone do (
    name ::= nil
)
Run Code Online (Sandbox Code Playgroud)

serialize.io

doRelativeFile("Foo.io")

baz := Foo clone setName("baz")

// serialize "baz" object to file
File with("serialized.data") open write(baz serialized) close
Run Code Online (Sandbox Code Playgroud)

restore_object.io

doRelativeFile("Foo.io")

baz := doString(
    File with("serialized.data") open readLines join
)
Run Code Online (Sandbox Code Playgroud)


实际上,您也可以使用或反序列化对象:doRelativeFiledoFile

baz := doRelativeFile("serialized.data")
Run Code Online (Sandbox Code Playgroud)

因为序列化数据只是Io代码.

/ I3az /