gpt4 book ai didi

json - 使用 Go 解码 PubSub 请求数据 []bytes

转载 作者:IT王子 更新时间:2023-10-29 02:23:09 26 4
gpt4 key购买 nike

我有一个从 Google PubSub 请求接收数据的端点。根据 this repo ,对象是这样的:

type pushRequest struct {
Message struct {
Attributes map[string]string
Data []byte
ID string `json:"message_id"`
}
Subscription string
}

数据字段的格式始终如一:

type Data struct {
Key string `json:"key"`
Body string `json:"body"`
Meta map[string]interface{} `json:"meta"`
}

我显然可以用这样的东西解码 JSON 请求:

f := &pushRequest{}
json.Unmarshal(msg, &f)

剩下的是 []bytes 字段。根据文档,我可以做这样的事情来转换为字符串

messages = append(messages, string(f.Message.Data))

这没有帮助,因为我需要它作为一个结构。

我可以再次解码数组:

var m Data
json.Unmarshal(f.Message.Data, &m)

已尝试将 pushRequest 结构中的字段类型更改为数据,但没有成功。空白...

有什么方法可以一次打开所有东西吗?做两次似乎很荒谬。

如果很明显,我就是看不到!

最佳答案

decoder := json.NewDecoder(r.Body)
psmsg := &PushRequest{}
decoderErr := decoder.Decode(&psmsg)

if decoderErr != nil {
// Error...
return
}

data := Data{}
unmarshalErr := json.Unmarshal([]byte(string(psmsg.Message.Data)), &data)

if unmarshalErr != nil {
// Error...
return
}

关于json - 使用 Go 解码 PubSub 请求数据 []bytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37579399/

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