想象一下,我有以下 JSON 回應:
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
有時我也會得到這個:
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "0"
}
}
}
現在,我想訪問上層 JSON 回應,如下所示:
obj_json = JSON.parse(message.payload)
json_id = (obj_json['glossary']['GlossDiv']['GlossEntry']['ID'])
puts json_id
但是每當我得到最底層的回應時,我都會收到以下錯誤:
未定義的方法 `[]' 為 nil:NilClass (NoMethodError)
我如何能夠忽略后一個回應?我可能只是想得太復雜了。
謝謝!
uj5u.com熱心網友回復:
ruby 有一個方法dig可以為你做存在性檢查。
obj_json = JSON.parse(message.payload)
json_id = obj_json.dig('glossary', 'GlossDiv', 'GlossEntry', 'ID')
puts json_id
這將繼續進入 JSON,直到它回傳請求的值或如果任何鍵不存在則回傳 nil。
uj5u.com熱心網友回復:
添加條件以檢查 GlossEntry 是否存在 json_id = obj_json['glossary']['GlossDiv']['GlossList']['GlossEntry'] ? obj_json['glossary']['GlossDiv']['GlossList']['GlossEntry']['ID'] : ''
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/368693.html
下一篇:Ruby中兩個變數值之間的空格
