2013-06-08 2 views
-3

JSON을 사용하여 문자열을 구문 분석하고 있습니다. 아티스트 명을 지정하면, 그 아티스트의 다섯 곡을 인쇄 할 echonest API를 사용하고 있습니다 :Ruby에서 JSON을 어떻게 파싱합니까?

require 'net/http' 
require 'rubygems' 
require 'json' 

puts "Enter an artists name:" 
artist_name = gets.chomp 


file =open(parsed) 

url = URI.parse("http://developer.echonest.com/api/v4/artist/songs? api_key=RYOXFCWIBV9IM0XCU&name=#{artist_name}&format=json&start=0&results=5") 
res = Net::HTTP.get_response(url) 

#puts res.body 

parsed = JSON.parse(res.body) 


parsed{'songs'}.each do |song| 
puts song{'title'} 
end 
+0

질문에서 모든 코드를 삭제 한 이유는 무엇입니까? – Mischa

+0

처음으로 부정적인 표를 얻은 시간이 ... 내 코드가 누구에게 도움이 될지 확신 할 수 없었습니다. – Ali

+0

모든 코드를 삭제했기 때문에 투표가 종료되었습니다. 그 질문은 그것 없이는 의미가 없습니다. – Mischa

답변

3

라인 file = open(parsed)을 가져 가라. 어쨌든 그것을 위해 무엇입니까?

마찬가지로 Ruby 해시는 으로 액세스하며, Perl과 같은 다른 언어에서는 {key}이 아닙니다.

parsed['response']['songs'].each do |song| puts song['title'] end 
1

이미 구문 분석 된 JSON을 열 필요없이 반복하십시오. {을 으로 바꿉니다.

parsed["response"]["songs"].each do |song| 
    p song["title"] 
end 
+0

NilClass Ali

+0

에 대해 'each'여전히 정의되지 않은 메서드 오류가 발생했습니다. 데이터에 "노래"키가 있는지 확인해야합니다. 파싱 ​​된 데이터를 인쇄 해 봅니다 : p 구문 분석. –

+0

구문 분석 된 데이터가 인쇄됩니다. 나는 res.body와 같은 출력을 얻는다. – Ali

관련 문제