首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ruby迭代JSON,并在数组中获取一个键值

使用Ruby迭代JSON,并在数组中获取一个键值
EN

Stack Overflow用户
提问于 2015-09-14 08:14:07
回答 1查看 4.3K关注 0票数 0

我在这个JSON上遇到了麻烦:

代码语言:javascript
复制
{
    "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"
    }
}

我试图迭代这些列表以获得每个列表的路径和工件值,在示例中有两个列表,但实际上有几十个列表。目的是知道哪个工件将被部署到自己的路径中。例如:

代码语言:javascript
复制
/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

经过深入的研究,我还是找不到解决办法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-14 08:20:18

代码语言:javascript
复制
json = JSON.parse(your_json)
values = json.map { |_, v| { v[:PATH] => v[:ARTIFACTS].split(',') } }

你会得到美味的哈希

代码语言:javascript
复制
{
  '/tmp/pruebaAlvaro' => ['example1.jar', 'another_one.jar', ...],
  '/tmp/pruebaAlvaro2' => [...]
}

而且,您可以迭代它:

代码语言:javascript
复制
values.each do |path, artifacts|
  artifacts.each do |artifact|
    puts path
    puts artifact
  end
  puts
end

您将得到相同的输出,这是您在问题中提供的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32560081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档