我有一些ruby代码,可以从jenkins那里得到一个json,它包含n个项的数组。我要的东西有一个名为“lastbuiltrevision”的密钥我知道我可以像这样在数组中循环actions.each do |action| if action["lastBuiltRevision"] lastSuccessfulRev = action["lastBuiltRevision"]["SHA1"] break endend但那感觉非常笨拙,没有我在与ruby合作时通常感觉到的魔力。我只花了大约一个星期的时间来修改它,我觉得我可能遗漏了一些东西来简化/加快这个过程。有这种事吗?或者我只能手动迭代?我有点希望lastSuccessfulRev = action.match("lastBuildRevision/SHA1") 最佳答案 使用 >:actions = [ {'dummy' => true }, {'dummy' => true }, {'dummy' => true }, {'lastBuiltRevision' => { "SHA1" => "123abc" }}, {'dummy' => true },]actions.find { |h| h.has_key? 'lastBuiltRevision'}['lastBuiltRevision']['SHA1']# => "123abc"更新如果没有匹配项,上面的代码将抛出Enumerable#find。如果不希望出现异常,请使用后续代码。rev = actions.find { |h| h.has_key? 'lastBuiltRevision' }rev = rev['lastBuiltRevision']['SHA1'] if rev
09-11 02:04