您好,我使用HTTParty调用了一个远程json文件,我需要提取该URL以便在其中一项测试中使用.
json格式类似于:
"manifest" : {
"header" : {
"generated" : "xxxxxxxxxxxxxxx",
"name" : "xxxxxxxxxxx",
"version" : "1.0.0"
},
"files" : [ {
"file" : "blimp.zip",
"url" : "http://www.xxx.xx/restaurants_blimp.zip",
"checksum" : "ee98c9455b8d7ba6556f53256f95"
}, {
"file" : "yard.zip",
"url" : "www.xxx.xx/yard.zip",
"checksum" : "e66aa3d123f804f34afc622b5"
}
在irb上,我可以获取示例中的所有子散列:[‘manifest’] [‘files’],并且仅当我指定哪个网址时,我才能获取url.例如,例如,将file [‘manifest’] [‘files’ ] [‘1’] [‘url’]<-在irb上确实有效,但是由于我需要获取所有url,这就是为什么我使用.each的原因,但是它使我无法转换为字符串错误或类似错误
#!/usr/bin/env ruby
require 'httparty'
HOST=ARGV[0]
ID=ARGV[1]
VERSION=ARGV[2]
class MyApi
include HTTParty
end
file = MyApi.get("http://#{HOST}/v1/dc/manifest/#{ID}/#{VERSION}")
file.each do |item|
puts item['manifest']['files']['url']
end
不起作用,但是我可以在IRB上执行以下操作:
将item [‘manifest’] [‘files’] [2] [‘url’]<-放进去-这会给我url,但是.each只会抱怨无法转换为字符串或类似内容
解决方法:
请尝试以下操作:
#!/usr/bin/env ruby
require 'httparty'
(HOST, ID, VERSION) = ARGV
class MyApi
include HTTParty
format :json
end
response = MyApi.get("http://#{HOST}/v1/dc/manifest/#{ID}/#{VERSION}")
puts response.inspect
格式:json的附加内容告诉HTTParty将响应解析为JSON.然后,您将获得一个哈希,可以正确地对其进行迭代.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。