簡體   English   中英

Rails和活動模型序列化程序:防止雙JSON編碼和轉義字符(\\)

[英]Rails and Active Model Serializers: prevent double JSON encoding and escape characters (\)

在我的一個控制器中,我手動組裝我的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\"}]"
    ...

有辦法防止這種情況嗎?

只需將哈希變量放在.to_json之后。

例:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM