gpt4 book ai didi

json - 解析嵌套在表单 urlencoded POST 中的 JSON 字符串

转载 作者:行者123 更新时间:2023-12-01 22:35:15 27 4
gpt4 key购买 nike

我正在尝试解析部分 Mailgun 通知 webhook。
这是一个带有 x-www-form-urlencoded 的 POST 请求 body 。
这是 body 的一部分:

sender: some@email.com
attachments: [{"url": "https://storage.eu.mailgun.net/v3/domains/beep.boop/messages/randomstring/attachments/0", "content-type": "application/pdf", "name": "example.pdf", "size": 345}]"]
attachments值为 json编码数组

我想将此字符串从 JSON 解码为 StoredAttachment嵌套结构,因为我将响应解码为 x-www-form-urlencoded但我不知道该怎么做。目标 structs如下:

type NotifiedMessage struct {
Sender string `schema:"sender"`
Subject string `schema:"subject"`
Attachments []StoredAttachment `schema:"attachments"`
MessageUrl string `schema:"message-url"`
}

// StoredAttachment structures contain information on an attachment associated with a stored message.
type StoredAttachment struct {
Size int `json:"size"`
Url string `json:"url"`
Name string `json:"name"`
ContentType string `json:"content-type"`
}

到目前为止,这是我的非工作代码: https://play.golang.org/p/Ofbw2VAYV28

最佳答案

您可以实现 TextUnmarshaler接口(interface),schema包将使用该接口(interface)而不是执行默认过程,这允许自定义解码。

1. 声明一个命名类型并将其用作 Attachments 的类型 field 。 []StoredAttachment未命名。因此,例如:

type AttachmentList []StoredAttachment

为什么?因为方法只能在命名类型上声明。

2. 实现 TextUnmarhsaler接口(interface)并在那里进行 json 分解。
func (ls *AttachmentList) UnmarshalText(text []byte) (err error) {
return json.Unmarshal(text, (*[]StoredAttachment)(ls))
}

就是这样。

https://play.golang.org/p/t65mI7JRFfS

关于json - 解析嵌套在表单 urlencoded POST 中的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58682335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com