1

MySQL データベースにカウントを問い合わせる PHP コードがあります。

ブラウザ経由でクエリを実行すると、次の出力が得られます。

{"count":"123"}

Net::HTTP 経由で同じ PHP スクリプトを実行する Ruby スクリプトもありますが、出力は異なります。

{"count"=>"123"}

どうしてこれなの?

//The URL
uri = URI.parse("http://lab/count.php")
http = Net::HTTP.new(uri.host, uri.port)
//Request URL
request = Net::HTTP::Get.new(uri.request_uri)
//Basic authentication
request.basic_auth("user1", "secret")
response = http.request(request)
//Response
response = JSON.parse(response.body)
puts results
//Value 'count'
count = JSON.parse(response.body)[0]
puts count

ありがとう。

4

1 に答える 1

6

{"count"=>"123"}は JSON レスポンスではありません。

ハッシュテーブルのルビリテラルです。

解析された JSON の結果が表示されていると思います。

>> require 'json'
>> JSON.parse('{"count":"123"}') # => {"count"=>"123"}
>> puts JSON.dump({"count"=>"123"}) # prints => {"count":"123"}

コメントへの更新応答

123印刷する。

uri = URI.parse("http://lab/count.php")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
request.basic_auth("user1", "secret")
response = http.request(request)
response = JSON.parse(response.body)
puts response['count']
于 2013-08-01T05:28:15.990 に答える