在Ruby中解析text / json数据

时间:2013-07-10 12:55:33

标签: ruby json parsing

我正在收集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`

更新 我确实在这个&现在我正在考虑使用循环。 我试图这样做的方式是:

  1. 查找记录数,例如:if:
  2.   

    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中的元素,那么我可能能够捕获特定元素。

    感谢。

1 个答案:

答案 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 ...但这也很容易。在将它们转换为字符串列表之前,我会对哈希进行处理。