如何解决如何使用结构构建以下 JSON 对象
我正在尝试使用 Golang 应用程序开发 Telegram Bot,一旦用户启动与我的机器人应用程序的会话,我需要请求用户的联系信息。
要做到这一点,我们必须使用以下类型的 JSON 正文向 Telegram API 发送 http 请求。我不知道如何使用 struct 和 JSON.Marshal 方法构建 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。
解决方法
to Marshal struct to want 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,}}}
res2 := ResponseStruct{ChatId: 123346,Text: "test",ReplyMarkup: ReplyMarkupStruct{
keyboard2,true,}}
b,_ = json.Marshal(res2)
log.Println(string(b))
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。