2011-11-17 13 views
12

मैं एक फेसबुक उपयोगकर्ता की पुस्तकों की एक सूची खींचने के लिए HTTParty उपयोग कर रहा हूँ, लेकिन मैं मुसीबत जवाब पार्स आ रही हैं:पार्सिंग HTTParty प्रतिक्रिया

फेसबुक इस तरह से रिटर्न डेटा:

{ 
    "data": [ 
    { 
     "name": "Title", 
     "category": "Book", 
     "id": "21192118877902", 
     "created_time": "2011-11-11T20:50:47+0000" 
    }, 
    { 
     "name": "Title 2", 
     "category": "Book", 
     "id": "1886126860176", 
     "created_time": "2011-11-05T02:35:56+0000" 
    }, 

और HTTParty पार्स एक रूबी वस्तु में। मैंने इस तरह कुछ करने की कोशिश की है (जहां ret प्रतिक्रिया है) ret.parsed_response और वह डेटा सरणी देता है, लेकिन वास्तव में अंदर आने वाले आइटमों तक पहुंचने से कोई विधि त्रुटि नहीं मिलती है।

#<HTTParty::Response:0x7fd0d378c188 @parsed_response={"data"=>[{"name"=>"Title", "category"=>"Book", "id"=>"21192111877902", "created_time"=>"2011-11-11T20:50:47+0000"}, {"name"=>"Title 2", "category"=>"Book", "id"=>"1886126860176", "created_time"=>"2011-11-05T02:35:56+0000"}, {"name"=>"Thought Patterns", "category"=>"Book", "id"=>"109129539157186", "created_time"=>"2011-10-27T00:00:16+0000"}, 
+1

क्या आप इस 'ret.parsed_response ["डेटा"] 'और' ret.parsed_response ["डेटा"] की तरह कोशिश कर रहे हैं। पहले ["name"] '? – rubyprince

+1

नहीं ... मैं 'ret.parsed_response.data' – Slick23

उत्तर

29

आप किसी भी कोड है कि एक त्रुटि फेंक रहा है है:

यह वही है HTTParty वास्तव में रिटर्न का एक नमूना है? parsed_response HTTParty प्रतिक्रिया से परिवर्तनीय हैश है, एक सरणी नहीं है। इसमें एक कुंजी है, "data" (स्ट्रिंग, प्रतीक नहीं)। हैश में "data" कुंजी के लिए मूल्य हैश की एक सरणी है, तो आप इस तरह के रूप पुनरावृति जाएगा:

data = ret.parsed_response["data"] 
data.each do |item| 
    puts item["name"] 
    puts item["category"] 
    puts item["id"] 
    # etc 
end 
+1

कर रहा था यह मेरी परेशानी थी - 'डेटा' का उपयोग करके आपने यहां किया है। धन्यवाद! – Slick23

+0

कोई समस्या नहीं, शुभकामनाएँ! –

+1

बिल्कुल सही धन्यवाद !!! इसने मेरी बहुत मदद की ! –

7

बस एक अतिरिक्त जानकारी - यह हमेशा एक डिफ़ॉल्ट नहीं है JSON उत्तर

HTTParty के result.response.body या result.response.parsed_response करता नहीं हमेशा एक हैश

के रूप है यह सिर्फ हेडर जिसे आपने अपने अनुरोध में उपयोग कर रहे हैं पर आम तौर पर निर्भर करता है। उदाहरण के लिए, आपको मान के साथ Accept हेडर निर्दिष्ट करने की आवश्यकता है गिटहब एपीआई पर मारते समय, अन्यथा यह स्ट्रिंग के रूप में आसानी से लौटाता है।

फिर आपको हैश ऑब्जेक्ट में स्ट्रिंग प्रतिक्रिया को परिवर्तित करने के लिए JSON.parse(data) का उपयोग करना होगा।

संबंधित मुद्दे