確立されたホイールを再発明しないでください。代わりに、RubyのURIは使用するのに適したツールです。
require 'uri'
uri = URI.parse('http://www.example.com')
uri.query = URI.encode_www_form( {:x => [1,2,3,4]} )
uri.to_s # => "http://www.example.com?x=1&x=2&x=3&x=4"
クエリ値のみが必要な場合:
query = URI.encode_www_form( {:x => [1,2,3,4]} ) # => "x=1&x=2&x=3&x=4"
Net :: HTTPを介して送信する場合は、ホイールを再発明しているように思えます。にハッシュをシリアル化する{"x"=>"[1, 2, 3, 4]"}
と、コードはコードのみで機能するように制限されます。JSON、YAML、またはXMLを使用すると、作業が楽になり、コードの移植性が高まります。
JSONを使用すると、Ruby / Python / Java / Perlなどの言語間で、ブラウザーからサーバーへ、またはクライアントからサーバーへ、マシン間でハッシュを簡単に移動できます。
require 'json'
hash = {:x => [1,2,3,4]}
hash.to_json
=> "{\"x\":[1,2,3,4]}"
JSON[hash.to_json]
=> {
"x" => [
[0] 1,
[1] 2,
[2] 3,
[3] 4
]
}
これは、ハッシュからJSONの表現、そしてハッシュへのラウンドトリップです。中間文字列"{\"x\":[1,2,3,4]}"
は、Net::HTTPを介して簡単に送信されます。