2016-11-09 5 views
0

WebフックからPOSTリクエストへの応答を表示しています。私はちょうど私がrender json: thingeeと私がthingeeを記録するとき、有効なjsonではないハッシュロケットを持っていることを認識しました。レンダリングjsonのハッシュロケット対コロン:

私は人々putsハッシュ見てきたし、それが正常に見えるが、それは私がやっているではないですが、私はPOSTに応じて、JSONとしてハッシュをレンダリングしています。..

レンダリングすると、私のハッシュは、次のようになります。

{"rates"=>[{"service_name"=>"Standard", "service_code"=>"f48", 
"total_price"=>"390",},{"service_name"=>"Expedited", "service_code"=>"f34", 
"total_price"=>"640"}]} 

しかし、私はそれが有効なJSONなると、このように見える必要があります。

{"rates":[{"service_name":"Standard", "service_code":"f48", 
"total_price":"390",},{"service_name":"Expedited", "service_code":"f34", 
"total_price":"640"}]} 

おかげ

+0

'thingee'のJSON表現を見たい場合は、' puts thingee.to_json'を実行できます。 'render json'はブラウザにJSON文字列を返しますが、' puts thingee'を実行すると、Hashオブジェクトの文字列表現が表示されます – james246

答えて

1

あまり心配しないでください。その完璧な罰金。あなたはJSON.generaterender: { json: @foo }ハッシュが渡されたハッシュを渡すとき

irb(main):002:0> { foo: 1, 'baz': 2 } 
=> {:foo=>1, :baz=>2} # coerces 'baz' into a symbol 
irb(main):003:0> { foo: 1, 'baz' => 2 } 
=> {:foo=>1, "baz"=>2} 

しかし変換:あなたがシンボルでないハッシュキーを持つようにしたい時はいつでもhashrocket構文を使用する必要がRubyでは

Rubyハッシュを有効なJSONに変換します。

irb(main):006:0> JSON.generate({ "foo" => 1, "baz" => 2 }) 
=> "{\"foo\":1,\"baz\":2}" 
irb(main):007:0> JSON.generate({ foo: 1, baz: 2 }) 
=> "{\"foo\":1,\"baz\":2}" 
irb(main):008:0> { foo: 1, baz: 2 }.to_json 
=> "{\"foo\":1,\"baz\":2}" 
関連する問題