在ruby中通过rabbitmq序列化和反序列化对象

Posted

技术标签:

【中文标题】在ruby中通过rabbitmq序列化和反序列化对象【英文标题】:Serialize and Deserialize object over rabbitmq in ruby 【发布时间】:2012-01-14 22:01:15 【问题描述】:

我想将一个对象序列化为 JSON,通过rabbitmq 将其通过网络发送,然后对其进行反序列化。

我有以下要序列化的对象:

lead = Lead.new

lead.company = 'some company'

operation = proc AMQP::Exchange.default.publish(
                                lead.to_json, 
                                :routing_key => header.reply_to,
                                :correlation_id => header.correlation_id
                              )

另一方面,我正在尝试像这样对对象进行反序列化:

callback_queue.subscribe do |header, body|
  puts "received #body.inspect"

  lead = ActiveSupport::JSON.decode body

  puts lead.company #NoMethodError: undefined method `company' for #<Array:0x6fe03f3b>

奇怪的是,json 是一个由 3 个哈希组成的数组,看起来像这样。

[\"created_at\":null,\"email\":\"dagda1@scotalt.net\",\"id\":null,\"lead_id\":null,\"updated_at\":null,\"created_at\":null,\"email\":\"paul.cowan@continuity2.com\",\"id\":null,\"lead_id\":null,\"updated_at\":null]"

谁能看出我做错了什么?

【问题讨论】:

***.com/questions/4464050/… 我的问题是我无法解码对象。我不明白为什么对象没有正确解码。 【参考方案1】:

我或多或少地使用相同的方法,并且在我身边正常工作。可能您发送的消息不正确(序列化问题)。使用新的rabbitmq,您可以在rabbit web 控制台中检查消息。

你可以尝试打印 to_json 之前。

【讨论】:

感谢您的提醒。很高兴知道它应该可以工作,而问题就在我的最后。

以上是关于在ruby中通过rabbitmq序列化和反序列化对象的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 高级 JSON 序列化

1-Web安全——序列化和反序列化

1-Web安全——序列化和反序列化

RabbitMQ发送对象

Golang 序列化和反序列化

ASP.NET 中JSON 的序列化和反序列化