2013-01-24 41 views
0

有沒有更有效的方法來完成這件事?通過這個我的意思是我可以重構我的腳本以更有效地獲得結果,而不是從另一個來源獲得這個信息,即。亞馬遜通過API或SDK。亞馬遜捲曲數據的Ruby重構

我這樣做,返回此

{ 
     "instanceId" : "i-123abcde", 
     "billingProducts" : null, 
     "version" : "2001-01-01", 
     "accountId" : "123456789012", 
     "instanceType" : "m1.large", 
     "architecture" : "x86_64", 
     "kernelId" : "aki-123ab1ab", 
     "ramdiskId" : null, 
     "pendingTime" : "2001-01-00T00:00:00Z", 
     "availabilityZone" : "us-east-1a", 
     "imageId" : "ami-12345ab1", 
     "devpayProductCodes" : null, 
     "privateIp" : "10.10.10.10", 
     "region" : "us-east-1" 
     } 

這是我的代碼塊

require 'rubygems' 
require 'curb' 
require 'pp' 

info = Curl.get("http://169.254.169.254/latest/dynamic/instance-identity/document") 

foo = info.body_str.split(',').join.scan(/"(.*?)" : "(.*?)"/) 

quux = {} 
foo.each do |baz| 
     quux[baz[0]] = baz[1] 
end 
pp quux 

結果是連鍵

{ 
     "instanceId" => "i-123abcde", 
     "version" => "2001-01-01", 
     "accountId" => "123456789012", 
     "instanceType" => "m1.large", 
     "architecture" => "x86_64", 
     "kernelId" => "aki-123ab1ab", 
     "pendingTime" => "2001-01-00T00:00:00Z", 
     "availabilityZone" => "us-east-1a", 
     "imageId" => "ami-12345ab1", 
     "privateIp" => "10.10.10.10", 
     "region" => "us-east-1" 
     } 

回答

2

也就是說JSON數據的哈希捲曲。這樣做:

require 'json' 
... 
quux = JSON.parse(info.body_str) 
+0

我甚至沒有注意捲曲輸出。很容易,謝謝! – kalikid021