我正在收集HTTP响应,它以text / json形式返回。原始格式如下:
{"param" => "value", "interesting_param" => [{"parama1"=>vala1,"parama2"=>vala2,"parama3"=>vala3,"parama4"=>vala4,"parama5"=>vala5},
{"paramb1"=>valb1,"paramb2"=>valb2,"paramb3"=>valb3,"paramb4"=>valb4,"paramb5"=>valb5}]}
当我执行JSON.parse(response.body)[“interesting_param”]时,我可以检索此输出:
{"parama1"=>vala1,"parama2"=>vala2,"parama3"=>vala3,"parama4"=>vala4,"parama5"=>vala5},
{"paramb1"=>valb1,"paramb2"=>valb2,"paramb3"=>valb3,"paramb4"=>valb4,"paramb5"=>valb5}
如何从上面的完整结果集中仅捕获以下内容。
`parama1-vala1`, `parama2-vala2` and `parama5-vala5`
`paramb1-valb1`, `paramb2-valb2` and `paramb5-valb5`
更新 我确实在这个&现在我正在考虑使用循环。 我试图这样做的方式是:
test = { “parama1”=> vala1, “parama2”=> vala2, “parama3”=> vala3, “parama4”=> vala4, “parama5”=> vala5}, { “paramb1”=> valb1, “paramb2”=> valb2, “paramb3”=> valb3, “paramb4”=> valb4, “paramb5”=> valb5}
然后,test.count
将 2 。
现在,如果以某种方式我可以使用循环迭代test
中的元素,那么我可能能够捕获特定元素。
感谢。
答案 0 :(得分:1)
看起来您希望将每个哈希映射到一个字符串列表中,该字符串是通过将键的字符串版本与值的字符串版本连接而形成的,并以“ - ”连接。
JSON.parse(response.body)["interesting_param"]
上面的代码应该为你提供一个哈希的哈希列表。
interesting_bits = JSON.parse(response.body)["interesting_param"]
result = interesting_bits.map{|bit| bit.map{|k,v| "#{k}-#{v}"}}
这样的事情应该可以解决问题。
puts result.inspect
#prints
# [ ["parama1-vala1","parama2-vala2","parama3-vala3","parama4-vala4","parama5-vala5"] , ["paramb1-valb1","paramb2-valb2","paramb3-valb3","paramb4-valb4","paramb5-valb5"] ]
我不明白你使用什么标准然后将其过滤到1,2和5 ...但这也很容易。在将它们转换为字符串列表之前,我会对哈希进行处理。