Lua向表中添加键值对(数组)

在我的Lua项目中,我接收一个数组,将其编码为JSON并传递。我的Lua编码函数如下:

local function encode_table(val, stack)

  local res = {}
  stack = stack or {}

  -- 循环引用?
  if stack[val] then error("循环引用") end

  stack[val] = true

  if val[1] ~= nil or next(val) == nil then
    -- 将其视为数组--检查键是否有效且不稀疏
    local n = 0

    for k in pairs(val) do

      if type(k) ~= "number" then
        error("无效的表:混合或无效的键类型")
      end
      n = n + 1
    end
    -- 在下面的下一行中需要添加一个存根
    if n ~= #val then
      error("无效的表:稀疏数组")--THIS TRIGGERS并停止代码
    end
    -- 编码
    for i, v in ipairs(val) do
      table.insert(res, encode(v, stack))
    end
    stack[val] = nil
    return "[" .. table.concat(res, ",") .. "]"

  else
    -- 将其视为对象
    for k, v in pairs(val) do

      if type(k) ~= "string" then
        error("无效的表:混合或无效的键类型")
      end

      table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
    end
    stack[val] = nil
    return "{" .. table.concat(res, ",") .. "}"
  end
end

问题是我收到了一个缺少1个元素的数组。我需要以键值方式添加一个存根,例如

myArray ['missingKey'] ='somestubvalue'

但我不知道如何做。还有一个检查稀疏数组的代码,这个检查会引发错误,所以我需要在此检查之前添加一个存根(请参阅代码)。如果您有任何想法,请告诉我。谢谢。

点赞