第一次在Rails中使用JSON并试图弄清楚它应该是非常基本的东西。我正在使用Stripe Rails库并尝试解析并将其中一个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")
在控制台中运行“puts coupon”会显示JSON字符串
JSON:{“id”:“test50”,“duration”:“once”,“duration_in_months”:null,“livemode”:false,“max_redemptions”:null,“object”:“coupon”,“percent_off “:50,”redeem_by“:null,”times_redeemed“:0}
但是试图跑:
parsed_json = ActiveSupport::JSON.decode(coupon)
导致以下错误:
TypeError: can't convert Stripe::Coupon into String
我甚至没有尝试解析JSON中的值 - 我确信我接近了错误。
由于
答案 0 :(得分:3)
您的错误消息说明了一切:coupon
是Stripe::Coupon
,而不是String
。尝试使用可用的to_json
method
答案 1 :(得分:-1)
我认为优惠券不是一个看起来像JSON的字符串,但在打印时看起来像是一个。尝试解码它的字符串表示。我不确定这个代码(我不是一个RoR程序员),但是我看到了很多类似的情况......