私のjson要素のいくつかがバックスラッシュ(\
)がエスケープされているのは誰ですか?Rails 3:JSON文字列の一部にエスケープ文字()が表示される
{"first":"John","last":"Smith","dogs":"[{\"name\":\"Rex\",\"breed\":\"Lab\"},{\"name\":\"Spot\",\"breed\":\"Dalmation\"},{\"name\":\"Fido\",\"breed\":\"Terrier\"}]"}
理想的には私は
この
2つのモデルで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
** BINGO!**ありがとうございました!なぜそれが起こったのか理解していますか?私はまだ緑がかかっていません。 – Meltemi
犬のto_jsonを呼び出すと、それを再エンコードしていて、2番目のエンコードがエスケープを引き起こしました。 – rwilliams
私はこの作業をすることができませんでした。 'to_json'を削除すると、' Dog 'のそれぞれに対して' inspect'文字列が返されました。しかし、このアプローチはうまくいきました:http://stackoverflow.com/questions/4170372/serializing-and-deserializing-complex-rails-objects-with-json/4170710#4170710 – zetetic