假設我有一個簡單的 json 物件,例如
{"a" :"1", "b":"2", "c":"3"}
在 ruby?? 中,我怎樣才能遍歷該物件,以便獲得值 1 2 和 3。
uj5u.com熱心網友回復:
假設您將物件作為字串。
require 'json'
json_obj = '{"a" :"1", "b":"2", "c":"3"}'
values = JSON.parse(json_obj).values
將為您提供陣列
["1", "2", "3"]
JSON.parse ,將 json 字串決議為 ruby?? 物件,在本例中為Hash的實體。Hash類有一個方法values ,它回傳一個包含值或每個哈希條目的陣列。
uj5u.com熱心網友回復:
這是一種純 ruby?? 方法(不需要JSON模塊),可用于決議這樣的簡單json字串:
regex首先使用匹配并捕獲引號中的任何內容的 a 將您的字串轉換為陣列:
json_str = '{"a" :"1", "b":"2", "c":"3"}'
json_arr = json_str.scan(/"(.*?)"/).map(&:join)
#=> ["a", "1", "b", "2", "c", "3"]
您可以停在那里,只需遍歷該陣列以使用類似的東西抓取每個第二個元素,each_slice(2).map(&:last)或者您可以完成轉換為hash. 有幾種方法可以做到這一點,但這里有一種Hash[]與splat operator:
json_hash = Hash[*json_arr]
#=> {"a"=>"1", "b"=>"2", "c"=>"3"}
然后,您可以簡單地訪問values:
json_hash.values
#=> ["1", "2", "3"]
一站式服務:
Hash[*'{"a\'a\'" :"1", "b":"2", "c":"3"}'.scan(/"(.*?)"/).map(&:join)].values
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/432262.html
上一篇:在不知道頁碼的情況下獲取分頁資料
