json - 如何正确反序列化包含来自 JSON 的顶级数组的 RabbitMQ 消息

标签 json go rabbitmq

我尝试这样做:

        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/

相关文章:

django - EC2 上的 RabbitMQ 消耗大量 CPU

javascript - 如何获取 JavaScript *代码文件*(输入中的字符串形式的代码)的 JSON(或等效)表示形式?

unit-testing - 在单元测试中使用随机数与硬编码值

android - 无法将 AAR 从 golang 导入我的应用程序(尝试过以前的答案,但它们不起作用)

go - 什么规则决定了 Go 包的安装位置?

java - Spring AMQP 处理已删除的队列

python - 使用 Rabbitmq 和 Python 进行 Stomp 广播

python - 在 python json.dumps 输出中禁用科学记数法

javascript - 意外的标识符错误

javascript - 在字符串中保存\n符号(JS)