将 Lua 表(包括纯 Lua 函数)序列化?

我们需要序列化包含字符串、数字、表和函数的 Lua 表。《Programming Lua》书中有序列化由字符串、数字和表组成的表的代码。我们尝试修改此函数以添加序列化函数的能力。具体来说,我们添加了一个类型为“function”的情况,并在函数上调用了 string.dump:

if type(o) == "number" then
    return tostring(o)
elseif type(o) == "function" then
    return "loadstring("..string.dump(o)..")"
else
    -- assume it is a string
    return string.format("%q", o)
end

这会向其余的纯文本表表示中注入 Lua 字节码。这是我们能想出的最接近的方法。

我们不关心序列化结果是否易读,它只需要能够像这样工作:

mytable = [一些包含函数的复杂 Lua 表]
dump = dump_t(mytable)

...

loaded_table = load_t(dump)

有什么好的想法吗?

点赞
用户33252
用户33252

请参阅 wiki 页面 查看多个实现。

Tony Finch 的版本 可能适合您使用。

2012-05-27 02:31:10