【发布时间】:2017-01-31 05:15:47
【问题描述】:
我已经在lua中序列化了一个表,lua有反序列化的函数吗?
function dump(o)
if type(o) == 'table' then
local s = '{ '
for k,v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end
s = s .. '['..k..'] = ' .. dump(v) .. ','
end
return s .. '} '
else
return tostring(o)
end
end
local people = {
{
name = "Fred",
address = "16 Long Street",
phone = "123456"
},
{
name = "Wilma",
address = "16 Long Street",
phone = "123456"
},
{
name = "Barney",
address = "17 Long Street",
phone = "123457"
}
}
file = io.open("test.lua", "a")
file:write("People:", dump(people))
这个程序的输出是:
人:{ [1] = { ["phone"] = 123456,["name"] = Fred,["address"] = 16 Long Street,} ,[2] = { ["phone"] = 123456,[ “名称”] = 威尔玛,
["address"] = 16 Long Street,} ,[3] = { ["phone"] = 123457,["name"] = Barney,["address"] = 17 Long Street,} ,}
请提出一种在 lua 中反序列化的方法。
【问题讨论】:
-
您应该使用
("%q"):format(o)而不是tostring(o)正确序列化字符串。然后将文件开头的People:替换为return,并用local people = dofile("test.lua")进行反序列化
标签: serialization lua