добрый день, мне нужна структура возврата из кода C в Lua.Моя структура имеет именованные поля, одним из них является массив другой именованной структуры:
{
"foo": 1,
"bar": [
{"field1": 11, "field2": 12},
{"field1": 21, "field2": 22}
],
"baz": 3
}
Я написал этот код:
lua_createtable(L, 0, 3); //0 indexed items, 3 keyed items
lua_pushnumber(L, 1);
lua_setfield(L, -2, "foo"); //root.foo = 1;
lua_createtable(L, 2, 0); //child table for bar field with 2 indexed items and 0 keyed
lua_pushnumber(L, 1); // set current item index to 1
lua_createtable(L, 0, 2); // child table with 2 keyed items
lua_pushnumber(L, 11);
lua_setfield(L, -2, "field1"); //root.bar[0].field1 = 11;
lua_pushnumber(L, 12);
lua_setfield(L, -2, "field2"); //root.bar[0].field2 = 12;
lua_settable(L, -2); //set root.bar[0]
lua_pushnumber(L, -2); //set current item index to 2
lua_createtable(L, 0, 2); //table for second bar items with 2 keys
lua_pushnumber(L, 21);
lua_setfield(L, -2, "field1"); //root.bar[1].field1 = 21;
lua_pushnumber(L, 22);
lua_setfield(L, -2, "field2"); //root.bar[1].field2 = 22;
lua_settable(L, -2); //set root.bar[1]
lua_setfield(L, -2, "bar"); //set root.bar
lua_pushnumber(L, 3);
lua_setfield(L, -2, "baz"); //root.baz = 3;
, но произошел сбой за исключением.предыдущий я пытаюсь сделать это без lua_settable и вызвать lua_setfield (L, -2, "bar") для дочерней таблицы после lua_createtalbe (L, 2, 0), но затем я получаю структуру со следующими полями:
root.field1 = 21
root.field2 = 22
root.baz = 3
Как я могу достичь целевой структуры?