1
我想推送一个哈希对象到rabbitmq。 这就是我如何推动:推动和拉动rabbitmq json在ruby
msg[:gateway] = "gat1"
msg[:params] = {
:status => "2",
:token_id => "SADF3434FG2FG",
:mb_tranaction_id => "1235ABC",
:random_num => "#{2*rand(155)}"
}
AmqpClient.instance.publish("#{RABBIT_MQ_CONFIG['ipn_queue']}", msg.to_json)
上它看起来像这样的输出:
{\"gateway\":\"gat1\",\"params\":{\"status\":\"2\",\"token_id\":\"SADF3434FG2FG\",\"mb_tranaction_id\":\"1235ABC\",\"random_num\":\"62\"}}
当我拉,我试图像这样回解码为哈希对象:
msg = JSON.parse(msg)
p "worker: #{msg.inspect}"
并且输出是:
"worker: {\"gateway\"=>\"skrill\", \"params\"=>{\"status\"=>\"2\", \"token_id\"=>\"SADF3434FG2FG\", \"mb_tranaction_id\"=>\"1235ABC\", \"random_num\"=>\"62\"}}"
但是当我试图通过密钥(网关)来访问它的价值观之一msg[:gateway]
我得到一个空字符串...
获取空白字符串表示'msg'实际上是一个散列,但该键不存在。尝试'msg.keys'来获取所有可用键的列表,并且您会发现它们中没有一个是符号,而是字符串。所以,用“网关”替换:网关,你很好走! – christianblais