我有一個數組:轉換陣列空PARAMS哈希
arr = ["dog", "cat", "eel"]
而且我想它轉換成JSON像這樣:
'{"dog": {}, "cat": {}, "eel": {} }'
我使用的地圖一樣嘗試所以:
arr.map{ |a| { a => {} } }
然後使用.to_json,但它不起作用。
我有一個數組:轉換陣列空PARAMS哈希
arr = ["dog", "cat", "eel"]
而且我想它轉換成JSON像這樣:
'{"dog": {}, "cat": {}, "eel": {} }'
我使用的地圖一樣嘗試所以:
arr.map{ |a| { a => {} } }
然後使用.to_json,但它不起作用。
我會使用each_with_object
正是如此:
h = arr.each_with_object({}) { |k,h| h[k] = { } }
然後你可以JSONifiy h
as ne EDED。
簡單的解決辦法是:
arr = [...]
hash = {}
arr.each {|k| hash[k] = {} }
arr = ["dog", "cat", "eel"]
@hash = {}
arr.collect{|a| @hash[a] ={}}
@hash.to_json
# "{\"dog\":{},\"cat\":{},\"eel\":{}}"
您正在嘗試初始化一個空哈希數組中的每個元素,to_json
不會工作一樣,
替代使用Hash::[]
:
arr = ["dog", "cat", "eel"]
Hash[arr.map { |key| [key,{}] }]
# => {"dog"=>{}, "cat"=>{}, "eel"=>{}}
puts JSON.dump(Hash[arr.map { |key| [key,{}] }])
# => {"dog":{},"cat":{},"eel":{}}
啊,就是這樣。如果沒有使用'Hash []'的答案,我會添加它。 –
arr = ["dog", "cat", "eel"]
# For Hash
hash = arr.inject({}) {|h, element| h.update(element => {}) }
# => {"dog"=>{}, "cat"=>{}, "eel"=>{}}
# For JSON Hash
json_hash = arr.inject({}) {|h, element| h.update(element => {}) }.to_json
# => "{\"dog\":{},\"cat\":{},\"eel\":{}}"
在紅寶石2.1.0
a = [...]
a.map{|k| [k,{}] }.to_h
謝謝!這工作完美。我會盡可能接受。 –