首页 > 解决方案 > 试图通过使用哈希和嵌套哈希的 API 在 CLI 上显示信息时卡住了

问题描述

试图从这个Futurama API显示关于字符的二级信息。

目前使用此代码获取信息:

def self.character 
    uri = URI.parse(URL)
    response = Net::HTTP.get_response(uri)
     data = JSON.parse(response.body)
     data.each do |c| 
        Character.new(c["name"], c["gender"], c["species"], c["homePlanet"], c["occupation"], c["info"], c["sayings"])
     end
end

然后,在使用此代码时,我要么从嵌套散列(如果字符 id > 8)返回(性别和物种),要么从原始散列(字符 id < 8)返回(性别和物种):

def character_details(character)
    puts "Name: #{character.name["first"]} #{character.name["middle"]} #{character.name["last"]}"
    puts "Species: #{character.info["species"]}" 
    puts "Occupation: #{character.homePlanet}"
    puts "Gender: #{character.info["gender"]}"  
    puts "Quotes:" 
        character.sayings.each_with_index do |s, i|
            iplusone = i + 1 
        puts "#{iplusone}. #{s} "
        end

end

不确定在哪里或使用什么逻辑来获取要显示的正确信息。

标签: jsonruby

解决方案


c['info]保存时可能有问题Character.new(c["name"], c["gender"], c["species"], c["homePlanet"], c["occupation"], c["info"], c["sayings"])

我正在运行你的代码,我看到infoAPI 的响应中不存在,应该在 character.gender 中访问性别

irb(main):037:0> character.gender
=> "Male"
irb(main):039:0> character.species
=> "Human"

我不明白这个评论:(如果字符 id > 8)或原始哈希(字符 id < 8)你能解释一下你需要做什么吗?


推荐阅读