Rails渲染JSON - >方括号?

时间:2010-11-24 08:03:08

标签: ruby-on-rails json rendering

我使用json渲染一些对象:

def index
  if user_signed_in?
   @todos = current_user.todos.find_all()
   render :json => @todos
  else
    return nil
  end
end

它实际上是这样做的,但是有一个问题。我得到了方形的brakets [] jround输出,一些插件或json查看器因为它们无法读取它。这里有一些示例输出:

[{"todo":{"name":"Test todo","created_at":"2010-11-24T07:40:07Z","updated_at":"2010-11-24T07:40:07Z","done":0,"id":1,"user_id":1}},{"todo":{"name":"Ali Test","created_at":"2010-11-24T07:40:30Z","updated_at":"2010-11-24T07:40:30Z","done":0,"id":2,"user_id":1}}]

提前感谢!

2 个答案:

答案 0 :(得分:0)

你试过吗?

render :json => @todos.to_json

答案 1 :(得分:0)

要获取JSON输出,您需要渲染哈希而不是数组。  以下是关于转换的深入帖子:

What is the best way to convert an array to a hash in Ruby

OP语法快速摘要:

 render :json => Hash[*@todos.flatten]

或不对称阵列

render :json => Hash[@todos.map {|key, value| [key, value]}]

在某些情况下,虽然这会增加你不想要的额外空值,你可能不得不打破你的阵列并使其变平,或者只是使用哈希[而不是[尽可能。]