如何使用结构构建以下 JSON 对象

我正在尝试使用Golang应用程序开发Telegram Bot,一旦用户启动与我的机器人应用程序的会话,我需要请求用户的联系信息。


为此,我们必须使用以下类型的JSON正文向Telegram API发送http请求。我不知道如何使用结构和JSON构建JSON。元帅法。有人可以帮我弄清楚吗?


{

    "chat_id": 774854789,

    "text": "message",

    "parse_mode": "markdown",

    "reply_markup": {

        "keyboard": [

            [{

                "text": "Send contact.",

                "request_contact": true,

                "request_location": false

            }]

        ],

        "resize_keyboard": true

    }

}

这是我需要使用结构构建的JSON。


慕莱坞森
浏览 80回答 1
1回答

喵喵时光机

将构造构造设置为所需的 json - 最好使用结构字段标记。非常基本的示例(有关更多信息,请阅读 https://golang.org/pkg/encoding/json/)和有关结构标签的一些信息 https://www.digitalocean.com/community/tutorials/how-to-use-struct-tags-in-go:package mainimport (    "encoding/json"    "log")type KeyboardStruct struct {    Text            string `json:"text"`    RequestContact  bool   `json:"request_contact"`    RequestLocation bool   `json:"request_location"`}type ReplyMarkupStruct struct {    Keyboard       [][]KeyboardStruct `json:"keyboard"`    ResizeKeyboard bool               `json:"resize_keyboard"`}type ResponseStruct struct {    ChatId      int               `json:"chat_id"`    Text        string            `json:"text"`    ParseMode  string            `json:"parse_mode"`    ReplyMarkup ReplyMarkupStruct `json:"reply_markup"`}func main() {    // Example 1.    var res ResponseStruct    // Make KeyboardStructs    keyboard := [][]KeyboardStruct{        {KeyboardStruct{            Text:            "",            RequestContact:  false,            RequestLocation: false,        }}}    // Change in .ReplyMarkup.Keyboard    res.ReplyMarkup.Keyboard = keyboard    b, _ := json.Marshal(res)    log.Println(string(b))    // Example 2.    keyboard2 := [][]KeyboardStruct{        {KeyboardStruct{            Text:            "",            RequestContact:  true,            RequestLocation: false,        }}}    res2 := ResponseStruct{ChatId: 123346, Text: "test", ReplyMarkup: ReplyMarkupStruct{        keyboard2, true,    }}    b, _ = json.Marshal(res2)    log.Println(string(b))}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go