我如何将用户对象解析为 return 屏幕名称并继续下一步?
How can i parse a user object to return a screen name and move on to my next step?
我在 code-cademy 学习 twittr api 在 rubygem 中的第 2 步(我认为它被称为)...我很容易完成第 1 步。
这是第二课读到的...
来自 verify_credentials.json 端点的响应包含对成功请求进行身份验证的用户的 JSON 编码表示。现在您将解析 API 响应并打印出当前用户的屏幕名称。
添加代码以将 HTTP 响应解码为 Ruby 对象。为此:
说明(这些是他们的说明)
为 json 包添加依赖项(哪个 json 包?)
访问 HTTP 响应主体(我该怎么做?)
解码 JSON 编码的响应
确保将解析后的响应分配给用户变量!
?
(我什至读了他们给我的提示...在下面)
提示
可以通过在源文件的顶部添加 require '' 来添加依赖项。 (我应该添加什么包?)
响应变量将有一个 属性 命名的正文,其中包含 HTTP 响应的文本。
您可以调用 JSON.parse 来解码 JSON 编码的字符串。这个方法returns一个解码对象。
我尝试了我认为正确的代码,但结果是不正确的。我需要输入什么才能使我的课程取得成功?
下面是他们给我的代码:
require 'rubygems'
require 'oauth'
# Parse a response from the API and return a user object.
def parse_user_response(response)
user = nil
# Check for a successful request
if response.code == '200'
# Parse the response body, which is in JSON format.
# ADD CODE TO PARSE THE RESPONSE BODY HERE
user =
# Pretty-print the user object to see what data is available.
puts "Hello, #{user["screen_name"]}!"
else
# There was an error issuing the request.
puts "Expected a response of 200 but got #{response.code} instead"
end
user
end
# All requests will be sent to this server.
baseurl = "https://api.twitter.com"
# Verify credentials returns the current user in the body of the response.
address = URI("#{baseurl}/1.1/account/verify_credentials.json")
# Set up HTTP.
http = Net::HTTP.new address.host, address.port
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
# If you entered your credentials in the previous
# exercise, no need to enter them again here. The
# ||= operator will only assign these values if
# they are not already set.
consumer_key ||= OAuth::Consumer.new "ENTER IN EXERCISE 1", ""
access_token ||= OAuth::Token.new "ENTER IN EXERCISE 1", ""
# Issue the request.
request = Net::HTTP::Get.new address.request_uri
request.oauth! http, consumer_key, access_token
http.start
response = http.request(request)
user = parse_user_response(response)
请尽可能提供帮助。感谢您的时间和考虑。 :)
您需要在代码的开头 [require 'json' ]。
您的用户名将在 response.body 中编码,但您需要对其调用 JSON.parse 才能正确解码。
所以你必须在#ADD CODE TO PARSE THE RESPONSE BODY HERE 之后回答:
用户 = JSON.parse(response.body)
我在 code-cademy 学习 twittr api 在 rubygem 中的第 2 步(我认为它被称为)...我很容易完成第 1 步。 这是第二课读到的...
来自 verify_credentials.json 端点的响应包含对成功请求进行身份验证的用户的 JSON 编码表示。现在您将解析 API 响应并打印出当前用户的屏幕名称。
添加代码以将 HTTP 响应解码为 Ruby 对象。为此:
说明(这些是他们的说明)
为 json 包添加依赖项(哪个 json 包?) 访问 HTTP 响应主体(我该怎么做?) 解码 JSON 编码的响应 确保将解析后的响应分配给用户变量! ?
(我什至读了他们给我的提示...在下面)
提示
可以通过在源文件的顶部添加 require '' 来添加依赖项。 (我应该添加什么包?)
响应变量将有一个 属性 命名的正文,其中包含 HTTP 响应的文本。
您可以调用 JSON.parse 来解码 JSON 编码的字符串。这个方法returns一个解码对象。
我尝试了我认为正确的代码,但结果是不正确的。我需要输入什么才能使我的课程取得成功? 下面是他们给我的代码:
require 'rubygems'
require 'oauth'
# Parse a response from the API and return a user object.
def parse_user_response(response)
user = nil
# Check for a successful request
if response.code == '200'
# Parse the response body, which is in JSON format.
# ADD CODE TO PARSE THE RESPONSE BODY HERE
user =
# Pretty-print the user object to see what data is available.
puts "Hello, #{user["screen_name"]}!"
else
# There was an error issuing the request.
puts "Expected a response of 200 but got #{response.code} instead"
end
user
end
# All requests will be sent to this server.
baseurl = "https://api.twitter.com"
# Verify credentials returns the current user in the body of the response.
address = URI("#{baseurl}/1.1/account/verify_credentials.json")
# Set up HTTP.
http = Net::HTTP.new address.host, address.port
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
# If you entered your credentials in the previous
# exercise, no need to enter them again here. The
# ||= operator will only assign these values if
# they are not already set.
consumer_key ||= OAuth::Consumer.new "ENTER IN EXERCISE 1", ""
access_token ||= OAuth::Token.new "ENTER IN EXERCISE 1", ""
# Issue the request.
request = Net::HTTP::Get.new address.request_uri
request.oauth! http, consumer_key, access_token
http.start
response = http.request(request)
user = parse_user_response(response)
请尽可能提供帮助。感谢您的时间和考虑。 :)
您需要在代码的开头 [require 'json' ]。
您的用户名将在 response.body 中编码,但您需要对其调用 JSON.parse 才能正确解码。
所以你必须在#ADD CODE TO PARSE THE RESPONSE BODY HERE 之后回答: 用户 = JSON.parse(response.body)