Rails 3: Escape-символы (\), появляющиеся в части строки JSON - PullRequest
3 голосов
/ 03 декабря 2010

Кто-нибудь знает, почему некоторые из моих элементов json экранированы (\), а другие нет?

{"first":"John","last":"Smith","dogs":"[{\"name\":\"Rex\",\"breed\":\"Lab\"},{\"name\":\"Spot\",\"breed\":\"Dalmation\"},{\"name\":\"Fido\",\"breed\":\"Terrier\"}]"}

В идеале я бы не хотел, чтобы из них сбежали НИКТОРЫ ...

Это было сгенерировано путем переопределения as_json в двух моделях. Человек имеет много собак.

#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

Ответы [ 2 ]

12 голосов
/ 03 декабря 2010
7 голосов
/ 03 декабря 2010

Попробуйте удалить to_json на dogs.to_json.

...