2010-12-03 71 views
3

私の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 

答えて

7

dogs.to_jsonto_jsonを削除してください。

+0

** BINGO!**ありがとうございました!なぜそれが起こったのか理解していますか?私はまだ緑がかかっていません。 – Meltemi

+2

犬のto_jsonを呼び出すと、それを再エンコードしていて、2番目のエンコードがエスケープを引き起こしました。 – rwilliams

+0

私はこの作業をすることができませんでした。 'to_json'を削除すると、' Dog 'のそれぞれに対して' inspect'文字列が返されました。しかし、このアプローチはうまくいきました:http://stackoverflow.com/questions/4170372/serializing-and-deserializing-complex-rails-objects-with-json/4170710#4170710 – zetetic

関連する問題