2013-07-22 2 views
0

Ruby를 사용하여 Ruby/Rail을 배우고 API에 액세스하는 작업에 착수했습니다. 빠른 질문이 있습니다.Ruby를 사용하여 배열 내부 해시에 액세스하는 문제

JSON을 반환하는 GET 요청을하고 있습니다. 일단 JSON을 다시 얻었 으면 원하는대로 끌어낼 수 있도록 구성 할 수 있어야합니다. 그러나 JSON은 해시가 포함 된 배열로 돌아옵니다. 그럼, response.body는 아래 보이는 것을 반환합니다. 응답 [0]은 내 요청을 처리하는 모든 JSON을 제공하고 "13"을 벗어납니다. 응답 [1]은 단지 13을 제공합니다. 예를 들어 초과 된 JSON을 모두 사용하지 않고 각 설문 조사의 ID를 어떻게 얻을 수 있습니까?

예를 들어

{ "surveys": [ { "status": "live", "responses": 2, "creator": "Service Organizer", "updated_at": "2013-07-10T22:16:23+00:00", "deploy_uri": "link", "responses_url": "link", "id": 221584, "name": "Test Email", "created_at": "2013-07-10T19:54:32+00:00", "uri": "link", "report_url": "link", "edit_url": "link" }, { "status": "live", "responses": 2, "creator": "Service Organizer", "updated_at": "2013-07-10T22:16:23+00:00", "deploy_uri": "link", "responses_url": "link", "id": 221584, "name": "Test Email", "created_at": "2013-07-10T19:54:32+00:00", "uri": "link", "report_url": "link", "edit_url": "link" } ], "total": 13 }

답변

0

는 ID를 수집 :이 들어

survey_ids = response.body["surveys"].map { |s| s["id"] } 

이 작동하려면, 당신은 댄 Singerman의 의견에 따라 JSON.parse와 루비 형식으로 JSON 문자열로 변환해야합니다.

의미가 있습니다,하지만 난 다음 오류 받고 있어요
+0

: "설문 조사"에 대한 정의되지 않은 메서드'지도 ': 문자열 (NoMethodError) 어떤 아이디어? –

+0

당신이 실제로 준 해시가 유효한 Ruby 해시 구문이 아닙니다. 그에 따라 응답을 업데이트했습니다. – lurker

+0

먼저 JSON.parse (response.body)를 사용하여 JSON을 루비 해시로 구문 분석하십시오. – DanSingerman