【发布时间】:2015-09-14 10:26:36
【问题描述】:
我在一个名为“json.json”的文件中有 JSON 内容:
{
"ENAX-BRANCHESM-10" :
{
"repo":"test-ASO",
"PATH":"/tmp/pruebaAlvaro",
"ARTEFACTOS":"enax_phoneValidationCX-1.0.0.jar,enax_phoneValidationCX-1.0.0-sn.jar,enax_phoneValidationCX-1.0.0-facade.jar",
"uri":"http://server:8081/artifactory/test-ASO",
"created":"A705663"
},
"QZQP-QZQPMAN-16" : {
"repo": "test-ASO",
"PATH": "/tmp/pruebaAlvaro2",
"ARTEFACTOS": "qzqp_manageApp.jar,qzqp_manageApp-sn.jar,qzqp_manageApp-facade.jar",
"uri": "http://server:8081/artifactory/test-ASO",
"created": "A705663"
}
}
我尝试这样做:
#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'uri'
require 'net/http'
fichero = File.read("./json.json")
parseo = JSON.parse(fichero)
valores = parseo.map { |_, v| { v[:PATH] => v[:ARTEFACTOS].split(',') } }
puts valores
但是我收到了这个错误:
pruebas.rb:11: private method `split' called for nil:NilClass (NoMethodError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `map'
from pruebas.rb:11:in `each'
from pruebas.rb:11:in `map'
from pruebas.rb:11
我的问题是,如何从 JSON 中获取此输出?
/tmp/pruebaAlvaro
enax_phoneValidationCX-1.0.0.jar
/tmp/pruebaAlvaro
enax_phoneValidationCX-1.0.0-sn.jar
/tmp/pruebaAlvaro
enax_phoneValidationCX-1.0.0-facade.jar
/tmp/pruebaAlvaro2
qzqp_manageApp.jar
/tmp/pruebaAlvaro2
qzqp_manageApp-sn.jar
/tmp/pruebaAlvaro2
qzqp_manageApp-facade.jar
parseo 变量的内容是:
QZQP-QZQPMAN-16createdA705663repotest-ASOurihttp://server:8081/artifactory/test-ASOARTEFACTOSqzqp_manageApp.jar,qzqp_manageApp-sn.jar,qzqp_manageApp-facade.jarPATH/tmp/pruebaAlvaro2ENAX-BRANCHESM-10createdA705663repotest-ASOurihttp://server:8081/artifactory/test-ASOARTEFACTOSenax_phoneValidationCX-1.0.0.jar,enax_phoneValidationCX-1.0.0-sn.jar,enax_phoneValidationCX-1.0.0-facade.jarPATH/tmp/pruebaAlvaro
这是正确的输出吗?也许我收到了那个错误,因为parseo.map 需要不同的内容并且失败了?我能做什么?
【问题讨论】:
-
此问题与您 2 小时前提出的问题相同。不要那样做。您不能指望即时响应,因为回答的人遍布世界各地,并在业余时间致力于回答。照原样,这是您的另一个问题的副本(尽管略有改写并提供了更多信息),我将其标记为这样。