3

我是lua的新手。我需要将以下字符串转换为 lua 表。我怎么能这样做?

str = "{a=1, b=2, c={d=3,e=4} }"

我想将此字符串转换为 lua 表,以便我可以像这样访问它:

print(str['a']) -- Output : 1
print(str['c']['d']) -- Output : 3
4

1 回答 1

12

您可以简单地将 a 添加str =到字符串的开头,然后让解释器将该字符串作为一个块加载。请注意,loadstring它不会运行块,而是返回一个函数。因此,您添加()以立即调用该函数并实际执行代码:

loadstring("str = "..str)()

这会做同样的事情:

str = loadstring("return "..str)()

如果您自己不生成字符串,那可能很危险(因为任何代码都会被执行)。在这种情况下,您可能需要手动解析字符串,以确保它实际上是一个表并且不包含错误的函数调用。

于 2013-03-14T14:57:27.470 回答