我是新來的紅寶石,請原諒我可能承受的任何無知。我想知道如何解析屬於特定鍵的每個值的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'的'數組,尋找每個「鍵」匹配。 –