【发布时间】:2021-12-16 03:11:23
【问题描述】:
我想通过 c lua 库发送一个 luatable。这适用于值,但在插入零时我遇到了麻烦。插入 nil 会从接收的 JSON 数据中删除数据。
发送值可以正常工作:
lua_pushnumber(&luaState, 2.5);
lua_rawseti(&luaState, -2, 1);
当插入 Nil 而不是数字时,索引和 Nil 都不会被接收。
lua_pushnil(&luaState);
lua_rawseti(&luaState, -2, 1);
显然 Lua 中的表格是一个数组,它不仅接受数字作为 索引,还有字符串或语言的任何其他值(nil 除外)。
我在表中添加了多个数字和具有索引的空字段,并且所有空字段都消失了,包括它们的索引值。即使最后一个值是数字。
进入:
lua_pushnumber(&luaState, 0);
lua_rawseti(&luaState, -2, 0);
lua_pushnil(&luaState);
lua_rawseti(&luaState, -2, 1);
lua_pushnumber(&luaState, 2);
lua_rawseti(&luaState, -2, 2);
我得到以下结果:{"0":0,"2":2}} 而我想要以下结果 {"0":0,"1":null,"2":2}}
为 null 添加字符串值不起作用,因为它给出了空引号。 {} 以 0 值结束。
我怎样才能在结果中获得一个带有 null 的索引?
【问题讨论】:
-
如果我的回答不令人满意,请提供更多背景信息。你想序列化一个 Lua 表,用 C 和一些 JSON 库创建吗?实际输出是多少?什么是预期的输出?分享更多代码