【问题标题】:Rails and Active Model Serializers: prevent double JSON encoding and escape characters (\)Rails 和 Active Model Serializers:防止双重 JSON 编码和转义字符 (\)
【发布时间】:2013-09-18 16:24:41
【问题描述】:

在我的一个控制器中,我手动组装了我的 JSON 数据,以便能够使用 AMS 自定义序列化程序:

data[:foos] = {}
Foo.find(foo_ids).each do |f|
  data[:foos][f.id.to_s] = render_to_string :json => f, :root => false, :serializer => FooCustomSerializer
end

data[:moos] = {}
Moo.find(moo_ids).each do |f|
  data[:moos][f.id.to_s] = render_to_string :json => f, :root => false, :serializer => MooCustomSerializer
end

result = {:system => system_info, :content => data}

respond_to do |format|
  format.json { render json: result }
end

它可以工作,但问题是它对 Moos 和 Foos 的编码是两倍,并且呈现的 JSON 有很多转义字符:

{ "system":"OK",
  "content":
    "foos":"[{\"name\":\"Rex\",\"breed\":\"Lab\"},{\"name\":\"Spot\",\"breed\":\"Dalmation\"},{\"name\":\"Fido\",\"breed\":\"Terrier\"}]"
    ...

有没有办法防止这种情况发生?

【问题讨论】:

    标签: ruby-on-rails json active-model-serializers


    【解决方案1】:

    只需将.to_json 放在哈希变量之后。

    例子:

    format.json { render json: result }
    # Change to
    format.json { render json: result.to_json }
    

    【讨论】:

      猜你喜欢
      • 2016-06-08
      • 2017-05-19
      • 2015-01-12
      • 1970-01-01
      • 2017-06-27
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      相关资源
      最近更新 更多