如何读取带有多个表的 .lua 文件?

大家好,我以前从未使用过 Lua,只是想将一个 .lua 文件解析并将其转换为一些 JSON。我可以对单个表格的文件进行如下操作:

return { ["Thing"] = { ["SubThing"] = {} } }

我目前遇到的问题是如何解析具有多个表格定义的 .lua 文件(我认为是这样的)。它看起来不是单个返回,而是这样的:

SomeVariable = { ["Thing1"] = { ["SubThing"] = {} } }
SomeOtherVariable = { ["Thing2"] = { ["SubThing2"] = {} } }
SomeLastVariable = { ["Thing3"] = { ["SubThing3"] = {} } }

由于我使用的 json 库 需要一个单独的表格进行解析,所以我不知道该怎么做。任何帮助都将非常感激。

我的最终目标是解析该文件并使那三个变量成为哈希的顶级键。

点赞
用户1847592
用户1847592
Old_G = {}
for k, v in pairs(_G) do
   Old_G[k] = v
end

dofile('file_name.lua')
--SomeVariable = { ["Thing1"] = { ["SubThing"] = {} } }
--SomeOtherVariable = { ["Thing2"] = { ["SubThing2"] = {} } }
--SomeLastVariable = { ["Thing3"] = { ["SubThing3"] = {} } }

local new_keys = {}
for k, v in pairs(_G) do
   if Old_G[k] ~= v then
      new_keys[k] = v
   end
end
Old_G = nil
return new_keys

_G 中键值对存入 Old_G 表中,再执行 file_name.lua 文件。执行后,_G 中可能会新增键值对,将新增的键值对存入 new_keys 表中并返回。其中,注释部分为示例。

2020-01-30 06:12:22
用户4984564
用户4984564

如果这是一个单独的文件,您可以执行以下操作:

local json = require 'cjson'
-- 使用 cjson,因为我熟悉它,我假设你的库也类似

local env = setmetatable({}, {__index=_G})
-- 创建一个新的“env”表,它将在全局环境中查找缺失的键

loadfile(
   "tables.lua", -- 您的文件
   "t", -- 仅读取Lua源文件,不读取字节码
   env -- 用“env”作为其环境加载代码
)() -- 加载后立即运行代码

print(json.encode(env))
2020-01-30 07:33:44