我正在从Rails控制台访问我的一个Rails操作:
> @consumer = OAuth::Consumer.new(
> x,
> x,
> site: "http://localhost:3000"
> )
> request = @consumer.create_signed_request(:get,"/get_user_info?email=x")
> uri = URI.parse("http://localhost:3000")
> http = Net::HTTP.new(uri.host, uri.port)
> http.request(request).body
=> "{"first_thing":"Nick","second_thing":"2012-12-26T11:41:11Z","third_thing":"2012-12-26T11:40:03Z"}"
> http.request(request).body.class
=> String
该操作应该返回JSON中的哈希值,而不是字符串。动作是这样结束的:
render json: {
first_thing: x,
second_thing: x,
third_thing: x
}
为什么它会以字符串的形式出现?我使用的是Rails 3.2.0和Ruby 1.9.3
您将始终从HTTP请求中获得字符串。render :json
只是将哈希值转换为JSON字符串。
你需要在字符串上做JSON.parse
它返回JSON,因为整个HTTP消息是基于字符串的。因此,要在控制台中获取JSON对象,您需要在响应体上调用JSON.parse
。
JSON.parse(http.request(request).body) # => {
# first_thing: x,
# second_thing: x,
# third_thing: x
#}