2012-06-16 4 views
0

처음 레일스에서 ​​JSON을 사용하여 매우 기본적인 것처럼 보이는 것을 찾아 내려고했습니다. Stripe Rails Library를 사용하여 JSON 요소 중 하나를 파싱하여 변수로 설정하려고합니다.레일에서 json 응답을 구문 분석하는 방법

coupon = Stripe::Coupon.retrieve(self.discount_code) 
    parsed_json = ActiveSupport::JSON.decode(coupon) 
    discount_amount = parsed_json["percent_off"] 

이 줄 작동 :

coupon = Stripe::Coupon.retrieve("save50percent") 

가 실행 콘솔에서 "쿠폰을두고"참조 JSON 문자열을

JSON을 보여줍니다 { "ID"여기

내 실제 시도 "false", "max_redemptions": null, "object": "coupon", "percent_off": 50, "redeem_by": null ":"test50 ","duration ":"once ","duration_in_months " , "times_reememed": 0}

하지만 실행하려고 다음 오류

parsed_json = ActiveSupport::JSON.decode(coupon) 

결과 : 나는 심지어 JSON의 값 구문 분석하려고에 못 했어

TypeError: can't convert Stripe::Coupon into String 

- 내가 확신 나는 틀리게 접근했다.

감사

답변

3

당신의 에러 메시지는 모두 coupon이다. a Stripe::Coupon, String이 아님. 사용 가능한 문자를 사용하십시오. to_json method

+0

그랬습니다! JSON으로 다시 돌아 오지 않는다는 것을 깨닫지 못했습니다. 물론 당연한 것 같습니다.) – cman77

-1

나는 쿠폰 JSON과 같은 문자열이 아니라 당신이 그것을 인쇄 할 때 하나처럼 보이는 가정 것이다. 오히려 문자열 표현을 디코딩 해보십시오. 나는이 코드를 잘 모르겠다. (나는 RoR 프로그래머가 아니다.) 그러나 당신이 가지고있는 것과 비슷한 많은 상황을 봤다. ...

+0

문자열이지만 JSON 문자열은 아닙니다. 그들은 "JSON :"으로 시작하지 않습니다. – sczizzo

+0

귀하의 답변도 몹시 도움이되지 않았습니다. 만약 당신이 정말로 걱정한다면, 나는 downvote를 풀 수 있습니다. (그러나 나는 당신이 당신의 답을 편집 할 필요가 있습니다, 나의 투표는 잠겨 있습니다.) – sczizzo

관련 문제