我如何将一个表格格式的字符串转换成一个表格,而不使用load()或loadstring()函数?

另一个问题(String to Table in Lua)问如何将一个格式化为表格的字符串转换为表格,给出的答案是使用 loadstringload 将字符串转换为要执行的块。

我也有一个使用 http.request 下载格式化为 lua 表格的文件的程序,就像其他问题一样:

yourTable = http.request("http://www.somesite.com/table.txt")
print(yourTable)

--yourTable 是一个格式化为 lua 表格而不是表格的字符串:
a={
    b = {
      c = 1,
      d = {
        e = {
        },
      },
    },
}

functionThatExpectsATable(yourTable) --因为 yourTable 是一个字符串而报错

虽然我可以使用 loadloadstring 来获取所需的表格,但这是一个潜在的安全漏洞,因为我的程序允许用户输入任何 URL 来加载他们的表格数据。如果他们指向 Lua 代码而不是格式化为 lua 表格的代码,那么该代码将被执行。

如何将 "表格格式化的字符串" 转换为表而不执行它?

点赞
用户151501
用户151501

以下是Pensight库中的示例实现:

https://github.com/stevedonovan/Penlight/blob/master/lua/pl/pretty.lua

请参见pretty.read函数。

2014-05-11 04:45:13