使用Ruby迭代JSON并获取数组中的键值

我在使用这个JSON时遇到了一些麻烦:

{ "ENAX-BRANCHESM-10" : { "repo":"test-ASO", "PATH":"/tmp/pruebaAlvaro", "ARTIFACTS":"example1.jar,another_one.jar,and_another.jar", "uri":"http://server:8081/artifactory/test-ASO", "created":"A705663" }, "QZQP-QZQPMAN-16" : { "repo": "test-ASO", "PATH": "/tmp/pruebaAlvaro2", "ARTIFACTS": "test543.jar,thisisa.jar,yesanother.jar", "uri": "http://server:8081/artifactory/test-ASO", "created": "A705663" } } 

我正在尝试遍历列表以获取每个列表的PATH和ARTIFACTS值,在示例中有两个列表,但实际上有几十个。 目的是了解将哪个工件部署到其自己的路径。 例如:

 /tmp/pruebaAlvaro example1.jar /tmp/pruebaAlvaro another_one.jar /tmp/pruebaAlvaro and_another.jar /tmp/pruebaAlvaro2 test543.jar /tmp/pruebaAlvaro2 thisisa.jar /tmp/pruebaAlvaro2 yesanother.jar 

在我深入搜索之后,我仍然无法得到解决方案。

 json = JSON.parse(your_json) values = json.map { |_, v| { v[:PATH] => v[:ARTIFACTS].split(',') } } 

你会得到漂亮的哈希

 { '/tmp/pruebaAlvaro' => ['example1.jar', 'another_one.jar', ...], '/tmp/pruebaAlvaro2' => [...] } 

并且,您可以迭代它:

 values.each do |path, artifacts| artifacts.each do |artifact| puts path puts artifact end puts end 

您将获得与问题中提供的相同的输出