【发布时间】:2023-03-27 14:35:01
【问题描述】:
我正在尝试将帐号列表从 json 返回插入到数组中,我将 json 返回转换为哈希,但由于某种原因我无法将值插入到数组中。我检查了 irb 上的哈希位置,它得到了帐号,例如位置 my_hash["aws_accounts"][0]["owner_id"] 将获得第一个帐号,my_hash["aws_accounts"][0]["status"]["level"] 将获得第一个帐户的状态。
如果其各自的状态颜色为“黄色”,我基本上想遍历所有帐户并存储帐号。
这是我的代码:
require 'json'
require 'rest-client'
j = RestClient.get 'https://chapi.cloudhealthtech.com/v1/aws_accounts?api_key=###&page=1&per_page=100'
my_hash = JSON.parse(j)
accnt_size = my_hash["aws_accounts"].size
intaccntsize = accnt_size.to_i
account_number_array = Array.new
x = 0
for accnt_iteration in x..intaccntsize do
puts accnt_iteration
if my_hash["aws_accounts"][accnt_iteration]["status"]["level"] == "yellow"
account_number_array.push(my_hash["aws_accounts"][accnt_iteration]["owner_id"])
end
end
这是错误消息
in `block in <main>': undefined method `[]' for nil:NilClass (NoMethodError)
from C:/Users/----/Desktop/-----/ruby_aws_sdk.rb:12:in `each'
from C:/Users/------/Desktop/-------/ruby_aws_sdk.rb:12:in `<main>'
任何建议都会有所帮助。谢谢。
【问题讨论】:
-
这个问题可以通过一个例子来改进。给出一个简化的散列(不引用 JSON 字符串)和数组,并显示你想要的结果(作为一个有效的 Ruby 对象)。为每个输入分配一个变量会很有帮助(例如,
arr = [1,2,3...]、h = { ...})。这样,读者可以在不定义变量的情况下引用它们。