Arrays 表[1]在表确实存在且具有值时返回nil

Arrays 表[1]在表确实存在且具有值时返回nil,arrays,indexing,lua,garrys-mod,source-engine,Arrays,Indexing,Lua,Garrys Mod,Source Engine,这是一个名为garrysmod的游戏脚本。是游戏中包含的一个我可以调用的函数 我包含的代码片段返回以下内容:(如果删除tostring(),则返回相同的输出) 我希望能得到“gm_构造”。我在这里遗漏了什么?您没有注意到的是,PrintTable先打印gm\u构造:,然后打印1=。 这意味着该表实际上只包含带有3个键的表的gmu构造键 要始终正确读取PrintTable输出,请查看标识1=被向右列表一次,这意味着它们是嵌套在最初打印的表中的某个内容的键 如果这仍然让您感到困惑,请尝试运行以下操作

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

我包含的代码片段返回以下内容:(如果删除tostring(),则返回相同的输出)


我希望能得到“gm_构造”。我在这里遗漏了什么?

您没有注意到的是,PrintTable先打印
gm\u构造:
,然后打印
1=
。 这意味着该表实际上只包含带有3个键的表的
gmu构造

要始终正确读取PrintTable输出,请查看标识
1=
被向右列表一次,这意味着它们是嵌套在最初打印的表中的某个内容的键

如果这仍然让您感到困惑,请尝试运行以下操作:

对于k,v成对(mapsawnsdata)do
打印(k,“=”,v)
结束
这不会打印嵌套内容


为了使您的代码能够正常工作,请执行
mapSpawnsData.gm_构造[1]
mapSpawnsData[“gm_构造”][1]

谢谢,这让我走上了正确的方向。
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]))
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