Ruby将字符串解析为json

时间:2016-08-07 06:35:26

标签: json ruby

所以我有一些看起来像这样的json,这是我通过做response.body.to_json从其他json中取出后得到的:

{\n \"access_token\": \"<some_access_token>\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3600,\n \"id_token\": \<some_token>\"\n}\n"

我想拉出access_token,所以我做

to_return = {token: responseJson[:access_token]}

但这给了我一个

  

TypeError:没有将Symbol隐式转换为整数

为什么呢?如何获取访问令牌?为什么到处都有随机反斜杠?

2 个答案:

答案 0 :(得分:3)

to_json没有解析JSON - 它完全相反:它将ruby对象转换为包含该对象的JSON表示的字符串。

从您的问题中不清楚response.body是什么。它可能是一个字符串,或者取决于您的http库,它可能已经为您解析过了。

如果是后者那么

response.body["access_token"]

如果前者尝试

,那将是你的令牌
JSON.parse(response.body)["access_token"]

答案 1 :(得分:0)

调用access_token时使用双引号。如下所示:

to_return = {token: responseJson["access_token"]}

或者反斜杠是转义分隔符,并确保首先解析JSON。