Lua中表的字符串

时间:2010-08-19 05:15:26

标签: lua

我使用LuaSocket和http.request来调用生成Lua表并将其输出到浏览器的远程PHP脚本。

当我将http.request响应存储在一个变量中时,它是一个字符串,这使得该表在我的Lua代码中无法使用。

例如:

eventData = http.request("http://www.example.com/events.php")
print( eventData )

--print outputs this "string", that is really a Lua table that PHP generated
months={
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
    'October',
    'November',
    'December',
}

例如,如果我尝试拨打几个月[4],它会错误地“尝试索引全球'月'(零值)”。 如何将该字符串转换为可用的表?

谢谢!

2 个答案:

答案 0 :(得分:10)

您可以使用loadstring创建一个可以执行的lua块。

eventData = [[
months = {
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
    'October',
    'November',
    'December',
}
]]

loadstring(eventData)()
if months then
    print(table.concat(months, ", "))
end

答案 1 :(得分:2)

从Lua 5.2开始,load支持字符串作为参数。因此,您现在可以使用Adam的答案,将loadtring替换为load。

请注意load(eventData)创建一个“function”类型的块,load(eventData)()创建一个块并调用它 - 从而创建表。这让我绊了一会儿。