2013-08-01 48 views
1

我有一些PHP代碼查詢MySQL數據庫的計數。不同的JSON響應 - {「count」:「123」} vs {「count」=>「123」}

當通過瀏覽器我得到以下輸出查詢:

{"count":"123"} 

我也有一個Ruby腳本,通過網絡執行相同的PHP腳本:: HTTP,但輸出不同的是:

{"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 

謝謝。

回答

6

{"count"=>"123"}不是JSON響應。

它是哈希表的哈希表。

我想你看到解析的JSON結果:

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

UPDATE迴應置評

要獲得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'] 
+0

@ pablo808,我添加了一個代碼。 – falsetru

+0

@ pablo808,其實你不需要解析JSON。從ruby腳本中刪除json解析部分。 – falsetru

+0

謝謝。如何只能打印值「123」。 – pablo808

相關問題