我使用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],它会错误地“尝试索引全球'月'(零值)”。 如何将该字符串转换为可用的表?
谢谢!
答案 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)()
创建一个块并调用它 - 从而创建表。这让我绊了一会儿。