json - Lua 表 - 两个具有相同键的条目

标签 json lua coronasdk lua-table

我不确定如何,但我们设法创建了一个具有两个完全相同的键的表。执行 for 时循环 pairs我们得到的表和打印键和值:

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”和 bool 值,两个值完全相同,但我想知道如果值不同会发生什么,哪一个会保留?我现在想到了很多场景。

我无法重现此问题,但我们会做什么:
  • 使用 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
    

    最佳答案

    实际上,在我添加了重现问题的方法之后,很明显发生了什么。
    table 变得混杂起来。

    当我这样做时:

    for k,v in pairs(d) do 
        print(k,v, type(k)) 
    end
    

    这一切都说得通:
    1   true    number
    1   true    string
    

    我们现在唯一的问题是 json Corona SDK 中的模块已更改 1编号为 "1"字符串。

    关于json - Lua 表 - 两个具有相同键的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34062793/

    相关文章:

    javascript - 使用 $.getJSON 方法获取 'undefined' 值

    json - 任何用于在 Classic ASP 中解析 JSON 的好库?

    Lua:十六进制字到二进制的转换

    c++ - 为返回对 vector 的函数创建 SWIG 类型映射

    datetime - 在 Lua 中获取 UTC UNIX 时间戳

    android - 如何在应用程序中集成自定义字体?

    c++ - 在 C++ 中使用 JSON 序列化 OpenCv Mat

    mysql - 你能在 MySql 中将行转换为 json 吗?

    android - 从 Lua 的构造函数访问函数

    audio - 从外部存储选择电晕Corona SDK