Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Думаю поможет понимание как json модуль определяет что table это объект или массив. Не секрет что в качестве этого модуля Corona использует обертку над библиотекой dkjson, которая определяет, грубо говоря, таблицу как массив если у нее все ключи это числа больше 0. Типы в json и Lua отличаются и эта конвенция вроде работает.
Моя обёртка над nlohmann json, тоже также преобразует таблицу lua в массив если все ключи целочисленные положительные. В lua по другому никак.
local nljson=require("nljson");
local a={23,45,56,'weer'}
local jsn=nljson.decode("{}");
jsn["k"]=a;
print(type(jsn))
print(jsn)
local str=tostring(jsn)
print(type(str))
print(str);
Результат:
userdata
{"k":[23.0,45.0,56.0,"weer"]}
string
{"k":[23.0,45.0,56.0,"weer"]}Проблема судя по всему в модуле json используемом в короне, который не хранит данные как userdata, a всегда использует таблицы lua.
json.encode ожидал этот подвох и вместо несуществующего 5 ключа вставил null и по этому все закончилось успехом
Corona SDK аномалия библиотеки json