2014-06-14 103 views
2

我試圖通過row_to_json從我的Postgres數據庫拉JSON,但是當我渲染使用這樣的事情是:ActiveRecord將row_to_json渲染爲轉義字符串,如何渲染爲純JSON?

render :status => 200, :json => sports

[{"row_to_json"=>"{\"id\":1,\"name\":\"Basketball\"}"} 
{"row_to_json"=>"{\"id\":2,\"name\":\"Football\"}"} 
{"row_to_json"=>"{\"id\":3,\"name\":\"Baseball\"}"}] 

它把row_to_json的值作爲轉義字符串,主場迎戰JSON。

有沒有一種簡單的方法將其轉換成合適的JSON對象比做這樣的事情的蠻力方式更好:

new_sports_array = Array.new() 
sports.each do |sport| 
    new_sports_array.push(JSON.parse(sport[:])) 
end 

我假設上述可在放不必要的稅我的api。

謝謝!

回答

2

嘿,請試試這個,

new_sports_array = [] 
sports.select{|s| new_sports_array << JSON.parse(s['row_to_json'])} 
+0

是的,看起來像這樣做是同樣的事情,只是更多的Ruby方式 – Hawk

1

你可以使用標準的Rails的行動呢?

def show_sports 
    sports = Sports.where(conditions) 
    render json: sports 
end 
+0

我存儲JSON在postgres中的JSON字段類型,並且當它從數據庫中返回數據到我的Rails散列時,它總是將[field_name => {json_field},field_name => {json_field},...]這令人討厭,因爲我只想[{json_field},{json_field}等] – Hawk

1

如果你有一個JSON字符串,你應該能夠做這樣的事情:

render text: <your json string>, content_type: 'application/json' 

這將幫助你避免內置to_json調用Rails使。