另一个问题(String to Table in Lua)已经询问如何将格式化为表格的字符串转换为字符串,并且给出的答案是使用loadstring
或load
来转换将字符串转换为随后执行的块。
我还有一个程序,使用http.request
下载一个像lua表一样的文件,就像其他问题一样:
yourTable = http.request("http://www.somesite.com/table.txt")
print(yourTable)
--yourTable is a string that is formatted like a lua table, but not a table:
a={
b = {
c = 1,
d = {
e = {
},
},
},
}
functionThatExpectsATable(yourTable) --throws error because yourTable is a string
虽然我可以使用load
或loadstring
来获取我想要的表,但这是一个潜在的安全漏洞,因为我的程序设计允许用户输入任何URL来加载其表数据从。如果他们指向lua代码而不是lua格式的表,那么将执行该代码。
如何转换"表格式字符串"进入表而不执行它?
答案 0 :(得分:4)
以下是Penlight库的示例实现:
https://github.com/stevedonovan/Penlight/blob/master/lua/pl/pretty.lua
请参阅pretty.read
功能