В моем проекте 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'
но я не знаю, как это сделать. Также в коде есть проверка на разреженный массив, и эта проверка выдает ошибку, поэтому мне нужно добавить заглушку, прежде чем эта проверка будет выполнена (см. Код). Любые идеи, как это сделать, будут приветствоваться. Спасибо.