使用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
您将获得与问题中提供的相同的输出