Table[1]返回nil,即使表存在并且具有值

local mapSpawnsData = {}
local JSONData = file.Read(filePath)            -- 读取文件作为json文本
mapSpawnsData = util.JSONToTable(JSONData)      -- 将JSON转换为表格

print("表格:")
PrintTable(mapSpawnsData)
print("表格[1]:")
print(tostring(mapSpawnsData[1]))

这是一个名为garrysmod的游戏的脚本。PrintTable()是一个我可以调用的函数,包含在游戏中。

我包括的代码片段返回这个:(如果我删除tosring(),则输出相同)

表格:
gm_construct:
            1       =       -1303.524902 167.472397 -44.081600
            2       =       1250.890137 331.746185 -44.081600
            3       =       674.012085 223.775604 -32.148102
表格[1]:
nil

我期望得到"gm_construct"。我在这里错过了什么?

点赞
用户8621712
用户8621712

你没有注意到的是,PrintTable 首先打印了 gm_construct:,然后是 1 =。 这意味着该表实际上只包含具有三个键的 gm_construct 键的表。

为了始终能正确阅读 PrintTable 输出,请查看缩进。1 = 向右缩进了一次,这意味着它们是最初打印的表中嵌套在某个东西中的键。

如果这仍然让你困惑,请尝试运行以下代码:

for k,v in pairs(mapSpawnsData) do
    print(k, "=", v)
end

这不会打印嵌套内容。

要使您的代码正常工作,请执行 mapSpawnsData.gm_construct[1]mapSpawnsData["gm_construct"][1]

2020-11-29 01:10:08