2016-11-20 18 views
0

Ruby on sinatraでrest APIを使用しています。 私は,,,Ruby on sinatra、JSON :: parserErrorの問題と757:予期しないトークン

def get_authrestapi() 
    @key = IMP_KEY 
    @secret = IMP_SECRET 

    response = RestClient.post 'https://api.iamport.kr/users/getToken', {'imp_key' => @key, 'imp_secret' => @secret}, :accept => :json 

    json = JSON.parse(response.to_json, symbolize_names: true) 

    return json['response']['access_token'] 
end 

をIAMPORTから支払い情報を得たが、私は

JSON :: ParserError支払い/で757以下のように...エラーメッセージが表示されました:「での予期しないトークン "{\" コード\ "応答\":\ "9898 ...."、 "..."}} "''

どのようにすることができますか?私はこの問題を解決する??私は、変数 'json'はハッシュではないという問題があると思う。

ありがとう。

+0

:で

json = JSON.parse(response.to_json, symbolize_names: true) 

は、次の行を置き換えます。 #json = JSON.parse(応答、:symbolize_names => true) しかし、この場合、定義されていないメソッド '[' ' –

答えて

1

応答をjsonに変換しないでください。それはすでにjsonです。私はまた、これらのコードを使用

json = JSON.parse(response, symbolize_names: true) 
+0

なぜ 'to_s'が必要ですか? –

+0

@Зелёный、応答が文字列のようなオブジェクトであることを忘れました。 'to_s'を削除しました。フィードバックいただきありがとうございます。 – falsetru

+0

ドキュメントによると応答はオブジェクトですが、https://github.com/rest-client/rest-client#usage-raw-url 'response.body'は文字列を返します。ちょっと混乱します。しかし、あなたの答えは正しいです。 –

関連する問題