为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕莱坞森 2022-08-01 10:04:59
我正在尝试使用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。
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

将构造构造设置为所需的 json - 最好使用结构字段标记。非常基本的示例(有关更多信息,请阅读 https://golang.org/pkg/encoding/json/)和有关结构标签的一些信息 https://www.digitalocean.com/community/tutorials/how-to-use-struct-tags-in-go:


package main


import (

    "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))

}


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信