我尝试这样做:
case message := <-Rmq.Messages:
go func() {
log.Printf("Process message: %s", message.MessageId)
rmqMessages := make([]RmqMessage, 100)
err := json.Unmarshal(message.Body, &rmqMessages)
if err != nil {
log.Fatalf("Error decoding %s: %v", message.Body, err)
}
var (
pushResult FcmResponse
rmqMessage RmqMessage
)
for _, rmqMessage = range rmqMessages {
它工作了一些迭代,而不是因 错误解码:JSON 输入意外结束
和 message.Body == nil
而失败。但是一切正常,如果 JSON 不是对象列表 ([{...}, {...}, ...]
而只是单个对象 {... }
我试过了
RmqMessages struct {
Messages []RmqMessage
}
rmqMessages := RmqMessages{}
err := json.Unmarshal(message.Body, &rmqMessages.Messages)
同样的结果
我做错了什么?
最佳答案
错误是在ack
循环迭代反序列化数组中的消息
关于json - 如何正确反序列化包含来自 JSON 的顶级数组的 RabbitMQ 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57521721/