【发布时间】:2016-03-07 21:04:12
【问题描述】:
我不知道怎么做,但我们设法创建了一个包含两个完全相同的键的表。在对表的pairs 执行for 循环并打印我们得到的键和值时:
1 true
1 true
我们认为这可能是不同类型或什么的问题,所以我们决定将其转换为 json(我们使用 Corona SDK 和内部 json 模块)。
结果相当惊人:
"ourTable" : { "1" : true, "1" : true }
我们将其存储在一个文件中以检查值,"1" 的两个十六进制值都是31。
所以另一个测试:将该 json 转换为 lua 表,然后......结果与之前相同:两个条目具有相同的键。
我以前从未见过这样的事情,老实说,我不知道如何检测和预防这种情况。 我们已经使用 lua 和 corona 几年了,这是我们第一次检测到这样的事情,但它可能以前发生过,我们没有检测到。这可能会导致一些令人难以置信的糟糕结果。
Corona SDK 正在使用 Lua 5.1。
我们将此表 json 编码存储在一个文件中。重新启动应用程序后,文件再次加载,它只包含一个条目!现在......这个表只包含“id”和布尔值,两个值完全相同,但我想知道如果值不同会发生什么,哪一个会保留?我现在想到了很多场景。
我无法重现此问题,但我们该怎么做:
- 用json读取文件
- 将json解码成lua表
- 在表中添加/更新条目,只需
tab[key] = value - 保存文件
编辑: 好吧,现在重现这个问题:
local d = {true}
d["1"]=true
for k,v in pairs(d) do
print(k,v)
end
1 true
1 true
【问题讨论】:
标签: json lua coronasdk lua-table