1

ハッシュ オブジェクトを rabbitmq にプッシュしようとしています。これは私がプッシュしている方法です:

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\"}}"

しかし、キー(ゲートウェイ)でその値の1つにアクセスしようとするとmsg[:gateway] 、空白の文字列が表示されます...

4

1 に答える 1

2

JSON 形式では、キーは文字列として表されるため、機能しmsg[:gateway]ませんが、機能msg["gateway"]します。

または、Rails を使用[with_indifferent_access][1]して、シンボルを介してハッシュにアクセスできるようにすることもできます。

于 2013-01-18T18:15:36.670 に答える