to_json在Rails中返回字符串而不是json

gab*_*ent 11 string gem json ruby-on-rails

以下代码应该返回一个json:

  @series = @series.map do |serie| {
    :name => serie.name,
    :id => serie.id
  }

  @series.to_json
Run Code Online (Sandbox Code Playgroud)

它的回报如下:

"[{\"name\":\"Barra\",\"id\":3},{\"name\":\"Botafogo 1\",\"id\":1},{\"name\":\"Botafogo 2\",\"id\":2},{\"name\":\"Tijuca\",\"id\":4}]"
Run Code Online (Sandbox Code Playgroud)

为什么它返回一个字符串而不是一个json?

我的.rb文件顶部安装并需要'json'gem

gab*_*ent 15

我刚刚解决了我的问题.出于某种原因as_json做我想要的而不是to_json.我不太明白为什么.如果我发现,我会更新我的答案.这很奇怪,因为to_json在我将开发数据库从sqlite 3更改为postgresql之前已经工作了.但我不认为这可能是问题,因为它与Heroku的postgre数据库很好地配合.

  • 因为`to_json`返回一个字符串,所以引号被转义.`as_json`返回一个哈希值. (6认同)