Quelqu'un sait-il pourquoi certains de mes éléments json sont en antislash (\
) se sont échappés alors que d'autres ne le sont pas?Rails 3: Caractères d'échappement () apparaissant dans une partie de la chaîne JSON
{"first":"John","last":"Smith","dogs":"[{\"name\":\"Rex\",\"breed\":\"Lab\"},{\"name\":\"Spot\",\"breed\":\"Dalmation\"},{\"name\":\"Fido\",\"breed\":\"Terrier\"}]"}
Idéalement, je voudrais qu'aucun d'entre eux à échapper ...
Cela a été généré en remplaçant as_json
en deux modèles. La personne a beaucoup de chiens.
#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
** BINGO! ** Merci! Vous comprenez pourquoi cela est arrivé? parce que je ne ... pas encore trop vert. – Meltemi
En appelant to_json sur des chiens, vous l'avez recodé et le second encodage a provoqué l'échappement. – rwilliams
Je ne pouvais pas faire ce travail - en supprimant 'to_json', la chaîne' inspect' était retournée pour chaque 'Dog'. Mais cette approche a fonctionné: http://stackoverflow.com/questions/4170372/serializing-and-deserializing-complex-rails-objects-with-json/4170710#4170710 – zetetic