json - 试图通过使用哈希和嵌套哈希的 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
不确定在哪里或使用什么逻辑来获取要显示的正确信息。
解决方案
c['info]
保存时可能有问题Character.new(c["name"], c["gender"], c["species"], c["homePlanet"], c["occupation"], c["info"], c["sayings"])
我正在运行你的代码,我看到info
API 的响应中不存在,应该在 character.gender 中访问性别
irb(main):037:0> character.gender
=> "Male"
irb(main):039:0> character.species
=> "Human"
我不明白这个评论:(如果字符 id > 8)或原始哈希(字符 id < 8)你能解释一下你需要做什么吗?
推荐阅读
- sql - 在 Postgresql 中将 UUlD 存储为 VARCHAR 而不进行任何格式化
- mobaxterm - 如何在 Mobaxterm 上使用自定义语法高亮
- amazon-web-services - Glue Boto 客户端——NoCredentialsError
- java - 如何在 android 上创建复制链接地址菜单?
- r - 使用 dplyr 查找列中的最大值并从不同列返回元素
- mongodb - Mongodb mongoose查询通过引用获取文档数
- python - python 在分区列结果之间剪切
- ssl - 如何将证书颁发机构 (CA) 添加到 k8s?
- c# - .NET Core API - 从服务器而不是本地存储返回图像 URL
- spring-boot - 使用 h2 数据库时如何“允许远程创建数据库”?