[英]How to merge hash results from an API in Ruby?
我正在從我們的電子郵件提供商的API中檢索訂戶信息。 他們返回每頁25個訂閱者的哈希值。 我想將每個頁面的結果合並為一個哈希(@members_subs_all)。 但是,雖然我的方法正確返回了@members_subs,但@members_subs_all不包含任何數據。
合並正確的方法嗎? 如果是這樣,我想讓它正確工作的地方是什么? 如果沒有,我應該怎么做?
def retrieve_members_info
@members_subs_all = {}
pages =* (0..1000)
pages.each do |i|
@members_subs = # API returns hash of 25 subscribers per page
@members_subs_all.merge(@members_subs)
break if @members_subs["data"].empty?
end
puts "members_subs_all #{@members_subs_all["data"]}"
end
您要merge!
而不是merge
。 merge
返回合並后的哈希值,但不更改其調用的哈希值。 merge!
返回合並的哈希值,並將其調用的哈希值更新為該值。
比較每個文檔:
還要注意,這是在Ruby和Ruby庫中命名的模式:
method
將某些更改的值返回給調用者,但不會永久更改調用者的值。 method!
返回更改的值,並使用該值更新調用方。 (另請參見method?
這些謂詞會根據調用者的method
是否為真來返回真實值。)
def merge_hashs(a,b)
a.merge(b) {|key, a_v, b_v| merge_hashs(a_v, b_v) }
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.