Оба движка говорят на Lua, а все API вокруг — на JSON. Ручное преобразование и есть источник ошибок: в Lua нет null, массивы начинаются с 1, а ключ, который не является идентификатором, требует квадратных скобок.
Если оставить пустым, таблица возвращается, а не присваивается.
Выключено — они убираются. Nil внутри массива Lua обрывает массив, поэтому оставлять его почти никогда не нужно.