Table[1] 当 table 确实存在且具有值时返回 nil

Table[1] returning nil when table does exist and has values

local mapSpawnsData = {}
local JSONData = file.Read(filePath)            -- read file as json text
mapSpawnsData = util.JSONToTable(JSONData)      -- convert JSON to table

print("TABLE:")
PrintTable(mapSpawnsData)
print("TABLE[1]:")
print(tostring(mapSpawnsData[1]))

这是一个名为 garrysmod 的游戏的脚本。 PrintTable()是我可以在游戏中调用的功能。

我包含的代码片段 returns 这个:(如果我删除 tosring() 则输出相同)

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

我希望返回“gm_construct”。我在这里错过了什么?

您没有注意到的是,PrintTable 先打印了 gm_construct:,然后打印了 1 = 。 这意味着 table 实际上只包含 gm_construct 键和带有 3 个键的 table。

为了能够始终正确读取 PrintTable 输出,请查看标识。 1 = 被列在右侧一次,这意味着它们是嵌套在您最初打印的 table 中的内容的键。

如果这仍然让您感到困惑,请尝试 运行 这个:

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

这不会打印嵌套内容。

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