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

时间:2019-04-21 19:48:25

标签: lua

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

local function encode_table(val, stack)

  local res = {}
  stack = stack or {}

  -- Circular reference?
  if stack[val] then error("circular reference") end

  stack[val] = true

  if val[1] ~= nil or next(val) == nil then
    -- Treat as array -- check keys are valid and it is not sparse
    local n = 0

    for k in pairs(val) do

      if type(k) ~= "number" then
        error("invalid table: mixed or invalid key types")
      end
      n = n + 1
    end
    -- need to add a stub somewhere here above the next line
    if n ~= #val then
      error("invalid table: sparse array") -- THIS TRIGGERS and stops the code
    end
    -- Encode
    for i, v in ipairs(val) do
      table.insert(res, encode(v, stack))
    end
    stack[val] = nil
    return "[" .. table.concat(res, ",") .. "]"

  else
    -- Treat as an object
    for k, v in pairs(val) do

      if type(k) ~= "string" then
        error("invalid table: mixed or invalid key types")
      end

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

问题是我重新获得一个缺少1个元素的数组。我需要以键-值的方式为其添加存根,例如

myArray['missingKey'] = 'somestubvalue'

但是我不知道该怎么做。另外在稀疏数组的代码中有一个检查,该检查会引发错误,因此我需要在完成检查之前添加一个存根(请参见代码)。任何想法如何做到这一点将受到欢迎。谢谢。

0 个答案:

没有答案