2011-03-18 77 views
0

我有這樣的:格式紅寶石

artists = search_object.map{|x| x["artistName"]}.uniq 
=> ["Metallica", "Madonna", "Lady Gaga"] 

我需要這種格式的JSON:

{"artists":[{"name":"Metallica"},{"name":"Madonna"},{"name":"Lady Gaga"}]} 

我嘗試這樣做:

>>  @api = {} 
=> {} 
>>   @api[:artists] = artists 
=> ["Metallica", "Madonna", "Lady Gaga"] 
>> @api 
=> {:artists=>["Metallica", "Madonna", "Lady Gaga"]} 

我需要它的API調用像這樣:

respond_to do |format| 
    format.json { render :json => @api} 
end 

但最新返回是不正確的json。

我該如何獲得這種格式?

回答

8

一個簡單Enumerable#map應該做的:

artists = ["Metallica", "Madonna", "Lady Gaga"] 
@api = {:artists => artists.map { |artist| {:name => artist} }} 
#=> {:artists=>[{:name=>"Metallica"}, {:name=>"Madonna"}, {:name=>"Lady Gaga"}]} 

注意,您可以使用符號作爲哈希鍵(這是更地道),因爲它們都轉換爲JSON作爲普通字符串。