我是新来的红宝石,请原谅我可能承受的任何无知。我想知道如何解析属于特定键的每个值的JSON响应。响应的格式为,Ruby,解析一个值为数组的JSON响应
[
{
"id": 10008,
"name": "vpop-fms-inventory-ws-client",
"msr": [
{
"key": "blocker_violations",
"val": 0,
"frmt_val": "0"
},
]
},
{
"id": 10422,
"name": "websample Maven Webapp",
"msr": [
{
"key": "blocker_violations",
"val": 0,
"frmt_val": "0"
}...
有一个在响应一些其他项目,但没有一个代码块巨大的缘故,我已经缩短了后援代码,我写的是:
require 'uri'
require 'net/http'
require 'JSON'
url = URI({my url})
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["cache-control"] = 'no-cache'
request["postman-token"] = '69430784-307c-ea1f-a488-a96cdc39e504'
response = http.request(request)
parsed = response.read_body
h = JSON.parse(parsed)
num = h["msr"].find {|h1| h1['key']=='blocker_violations'}['val']
我基本上是寻找每个阻滞剂违规的val(json响应包含数百个条目,所以我期待数百个阻滞剂值)。我希望num会包含所有'val'的数组。如果您对此有所了解,这将非常有帮助!
编辑!我得到一个控制台输出
scheduler caught exception:
no implicit conversion of String into Integer
C:/dashing/test_board/jobs/issue_types.rb:20:in `[]'
C:/dashing/test_board/jobs/issue_types.rb:20:in `block (2 levels) in <top (requi
red)>'
C:/dashing/test_board/jobs/issue_types.rb:20:in `select'
我怀疑这可能有太多的问题,但一些帮助表示赞赏!
您需要遍历对象的数组过来,然后遍历msr'的'数组,寻找每个“键”匹配。 –