Rails 3: Escape characters (\) appearing in part of JSON string

13,695

Solution 1

Try removing the to_json on dogs.to_json.

Solution 2

Check out jonathanjulian.com's Rails to_json or as_json?

Share:
13,695
Meltemi
Author by

Meltemi

Updated on June 14, 2022

Comments

  • Meltemi
    Meltemi almost 2 years

    Anyone know why some of my json elements are being backslash(\) escaped while others are not?

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

    Ideally I'd like NONE of them to be escaped...

    This was generated by overriding as_json in two models. Person has_many Dogs.

    #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