JSON.Lua json.encode返回nil

问题描述 投票:0回答:1

我是LUA的新手,并尝试用Garrys Mod学习编写这种语言。

我想从Garrys Mod聊天中获取消息并将其发送到带有webhook的Discord频道。

它有效,但我尝试用嵌入式消息扩展这个项目。我需要JSON,并使用json.lua作为库。

但是只要我发送消息,我就会检索以下错误消息:

尝试索引全局'json'(零值)

导致错误的代码如下:

json.encode({ { 
        ["embeds"] = { 
            ["description"] = text, 
            ["author"] = { 
                ["name"] = ply:Nick()
            }, 
        }, 
    } }),

完整的代码:

AddCSLuaFile()
json = require("json")

webhookURL = "https://discordapp.com/api/webhooks/XXX"
local DiscordWebhook = DiscordWebhook or {}

hook.Add( "PlayerSay", "SendMsg", function( ply, text )
    t_post = {
        content = json.encode({ { 
            ["embeds"] = { 
                ["description"] = text, 
                ["author"] = { 
                    ["name"] = ply:Nick()
                }, 
            }, 
        } }),
        username = "Log",
    } 
    http.Post(webhookURL, t_post)
end )

我希望有人可以帮助我

json lua null discord garrys-mod
1个回答
1
投票

Garry的Mod确实提供了两个与json一起工作的函数。

他们是:

util.TableToJSON( table table, boolean prettyPrint=false )

util.JSONToTable( string json )

没有必要导入json,如果我没记错,甚至不可能。

对于你想要做的事,你需要将你的参数构建为一个像这样的表:

local arguments = {
["key"] = "Some value",
["42"] = "Not always the answer",
["deeper"] = {
  ["my_age"] = 22,
  ["my_name"] = getMyName()
},
["even more"] = from_some_variable

然后打电话

local args_as_json = util.TableToJSON(arguments)

现在你可以将args_as_json传递给你

http.Post( string url, table parameters, function onSuccess=nil, function onFailure=nil, table headers={} )
© www.soinside.com 2019 - 2024. All rights reserved.