Rails 3:转义字符(\)出现在JSON字符串的一部分中

Mel*_*emi 3 serialization json ruby-on-rails object-graph

任何人都知道为什么我的一些json元素被反斜杠(\)转义而其他人没有?

{"first":"John","last":"Smith","dogs":"[{\"name\":\"Rex\",\"breed\":\"Lab\"},{\"name\":\"Spot\",\"breed\":\"Dalmation\"},{\"name\":\"Fido\",\"breed\":\"Terrier\"}]"}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望他们中没有人逃脱......

这是通过覆盖as_json两个模型生成的.人has_many狗.

#models/person.rb
class Person < ActiveRecord::Base
  has_many :dogs

  def as_json(options={}) 
     {
       :first => first,
       :last => last,
       :dogs => dogs.to_json
     }
   end
end

#models/dog.rb
class Dog < ActiveRecord::Base
  belongs_to :people

  def as_json(options={})
    {
      :name => name, 
      :breed => breed
    }
  end
end
Run Code Online (Sandbox Code Playgroud)

Sam*_*amo 12

查看jonathanjulian.com的Rails to_json或as_json


rwi*_*ams 7

尝试删除to_json开启dogs.to_json.

  • 通过在狗上调用to_json,你重新编码它,第二个编码导致转义. (2认同)