我正在尝试通过row_to_json从PostGres数据库中提取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征收不必要的税。
谢谢!
答案 0 :(得分:2)
嘿,请试试这个,
new_sports_array = []
sports.select{|s| new_sports_array << JSON.parse(s['row_to_json'])}
答案 1 :(得分:1)
您可以使用标准的Rails操作吗?
def show_sports
sports = Sports.where(conditions)
render json: sports
end
答案 2 :(得分:1)
如果你有一个json字符串,你应该可以这样做:
render text: <your json string>, content_type: 'application/json'
这将帮助您避免Rails创建的内置to_json调用。