我有一个数组:
arr = ["dog", "cat", "eel"]
我想把它转换成像这样的JSON:
'{"dog": {}, "cat": {}, "eel": {} }'
我尝试过像这样使用地图:
arr.map{ |a| { a => {} } }
然后使用.to_json,但它不太有用。
答案 0 :(得分:2)
答案 1 :(得分:2)
使用Hash::[]
替代方案:
arr = ["dog", "cat", "eel"]
Hash[arr.map { |key| [key,{}] }]
# => {"dog"=>{}, "cat"=>{}, "eel"=>{}}
puts JSON.dump(Hash[arr.map { |key| [key,{}] }])
# => {"dog":{},"cat":{},"eel":{}}
答案 2 :(得分:2)
in ruby 2.1.0
a = [...]
a.map{|k| [k,{}] }.to_h
答案 3 :(得分:1)
简单的解决方案是:
arr = [...]
hash = {}
arr.each {|k| hash[k] = {} }
答案 4 :(得分:1)
arr = ["dog", "cat", "eel"]
@hash = {}
arr.collect{|a| @hash[a] ={}}
@hash.to_json
# "{\"dog\":{},\"cat\":{},\"eel\":{}}"
您正在尝试将空哈希初始化为数组的每个元素,to_json
不会像那样工作
答案 5 :(得分:1)
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\":{}}"