使用 json.encode 正确传输数据时,为何 JSON.parse 无法正确解析?

我正使用 JSON:encode 准备一个 Lua 表用于 UDP 传输。在接收端,我用 JSON.parse 解码并定义 3 个变量。在传输端,我通过打印 botMsg[0]、botMsg[1] 和 botMsg[2] 的日志,验证表格已创建并包含所有三个变量。接收端,我运行 obj = JSON.parse(msg),然后定义其中的 3 个变量以供代码使用。但我最终得到的是,第一个变量 obj[0] 实际上是 botMsg[1],obj[1] 是 botMsg[2] 而 obj[2] 是 undefined

寻找为什么会发生这种情况的想法?

传输端的 Lua 代码如下:

PandaBoss.sendBossMessage = function(msg)

    botMsg = {}
    botMsg[1] = msg
    botMsg[2] = guild_ID
    botMsg[3] = channel_ID

    env.info(botMsg[1]) -- 在数据日志中打印msg
    env.info(botMsg[2]) -- 在数据日志中打印guild_id
    env.info(botMsg[3]) -- 在数据日志中打印channel_id

    json_string = JSON:encode(botMsg)

    socket.try(PandaBoss.UDPSendSocket:sendto(json_string, ip, 31090))

end

接收端的 node.js 代码如下:

server.on('message', function(msg) {
obj = JSON.parse(msg)
bossMsg = obj[0]
guild_ID = obj[1]
channel_ID = obj[2]
console.log(bossMsg); // 打印guild_id
console.log(guild_ID); // 打印channel_id
console.log(channel_ID); // 打印undefined

});

接收端的新更改如下:

server.on('message', function(msg) {

console.log(msg.toString());
obj = JSON.parse(msg)
bossMsg = obj[0]
guild_ID = obj[1]
channel_ID = obj[2]
console.log(bossMsg);
console.log(guild_ID);
console.log(channel_ID);

});
点赞