1. 22 6月, 2014 1 次提交
  2. 18 6月, 2014 1 次提交
  3. 15 3月, 2014 1 次提交
  4. 27 1月, 2014 3 次提交
  5. 03 12月, 2013 1 次提交
  6. 27 11月, 2013 5 次提交
  7. 23 11月, 2013 1 次提交
  8. 15 11月, 2013 1 次提交
    • G
      Improved compatibility with the stdlib JSON gem. · 0f33d70e
      Godfrey Chan 提交于
      Previously, calling `::JSON.{generate,dump}` sometimes causes
      unexpected failures such as intridea/multi_json#86.
      
      `::JSON.{generate,dump}` now bypasses the ActiveSupport JSON encoder
      completely and yields the same result with or without ActiveSupport.
      This means that it will **not** call `as_json` and will ignore any
      options that the JSON gem does not natively understand. To invoke
      ActiveSupport's JSON encoder instead, use `obj.to_json(options)` or
      `ActiveSupport::JSON.encode(obj, options)`.
      0f33d70e
  9. 07 11月, 2013 2 次提交
  10. 06 11月, 2013 2 次提交
    • G
      Eliminate `JSON.{parse,load,generate,dump}` and `def to_json` · ff1192fe
      Godfrey Chan 提交于
      JSON.{dump,generate} offered by the JSON gem is not compatiable with
      Rails at the moment and can cause a lot of subtle bugs when passed
      certain data structures. This changed all direct usage of the JSON gem
      in internal Rails code to always go through AS::JSON.{decode,encode}.
      
      We also shouldn't be implementing `to_json` most of the time, and
      these occurances are replaced with an equivilent `as_json`
      implementation to avoid problems down the road.
      
      See [1] for all the juicy details.
      
      [1]: intridea/multi_json#138 (comment)
      ff1192fe
    • G
      Fixed Object#as_json and Struct#as_json with options · 134c1156
      Godfrey Chan 提交于
      These methods now takes the same options as Hash#as_json, for example:
      
          struct = Struct.new(:foo, :bar).new
          struct.foo = "hello"
          struct.bar = "world"
          json = struct.as_json(only: [:foo]) # => {foo: "hello"}
      
      This is extracted from PR #11728 from @sergiocampama, see also the
      discussion in #11460.
      134c1156
  11. 13 9月, 2013 1 次提交
    • G
      Moved all JSON core extensions into core_ext/object/json · 64c88fb5
      Godfrey Chan 提交于
      TL;DR The primary driver is to remove autoload surprise.
      
      This is related to #12106. (The root cause for that ticket is that
      json/add defines Regexp#to_json among others, but here I'll reproduce
      the problem without json/add.)
      
      Before:
      
         >> require 'active_support/core_ext/to_json'
         => true
         >> //.as_json
         NoMethodError: undefined method `as_json' for //:Regexp
           from (irb):3
           from /Users/godfrey/.rvm/rubies/ruby-2.0.0-p195/bin/irb:16:in `<main>'
         >> //.to_json
         => "\"(?-mix:)\""
         >> //.as_json
         => "(?-mix:)"
      
      After:
      
         >> require 'active_support/core_ext/to_json'
         => true
         >> //.as_json
         => "(?-mix:)"
      
      This is because ActiveSupport::JSON is autoloaded the first time
      Object#to_json is called, which causes additional core extentions
      (previously defined in active_support/json/encoding.rb) to be loaded.
      
      When someone require 'active_support/core_ext', the expectation is
      that it would add certain methods to the core classes NOW. The
      previous behaviour causes additional methods to be loaded the first
      time you call `to_json`, which could cause nasty surprises and other
      unplesant side-effects.
      
      This change moves all core extensions in to core_ext/json. AS::JSON is
      still autoloaded on first #to_json call, but since it nolonger
      include the core extensions, it should address the aforementioned bug.
      
      *Requiring core_ext/object/to_json now causes a deprecation warnning*
      64c88fb5
  12. 01 6月, 2013 1 次提交
  13. 26 5月, 2013 1 次提交
  14. 09 5月, 2013 1 次提交
    • M
      Added escaping of U+2028 and U+2029 inside the json encoder. · 582b4417
      Mario Caropreso 提交于
      U+2028 and U+2029 are allowed inside strings in JSON (as all literal
      Unicode characters) but JavaScript defines them as newline
      seperators. Because no literal newlines are allowed in a string, this
      causes a ParseError in the browser. We work around this issue by
      replacing them with the escaped version. The resulting JSON is still
      valid and can be parsed in the browser.
      
      This commit has been coauthored with Viktor Kelemen @yikulju
      582b4417
  15. 04 5月, 2013 1 次提交
  16. 28 12月, 2012 1 次提交
  17. 15 12月, 2012 1 次提交
    • B
      Remove unicode character encoding from ActiveSupport::JSON.encode · 8f8397e0
      Brett Carter 提交于
      The encoding scheme (e.g.  -> "\u2620") was broken for characters
      not in the Basic Multilingual Plane.  It is possible to escape them
      for json using the weird encoding scheme of a twelve-character
      sequence representing the UTF-16 surrogate pair (e.g. '𠜎' ->
      "\u270e\u263a") but this wasn't properly handled in the escaping code.
      Since raw UTF-8 is allowed in json, it was decided to simply pass
      through the raw bytes rather than attempt to escape them.
      8f8397e0
  18. 12 11月, 2012 1 次提交
  19. 08 8月, 2012 1 次提交
    • E
      Deprecate ActiveSupport::JSON::Variable · 83f2ffcf
      Erich Menge 提交于
      Reason: ActiveSupport::JSON::Variable is not used anymore internally. It
      was deprecated in 3-2-stable but we reverted all the deprecation for
      point releases.
      
      See #6536 and #6546.
      Conflicts:
      	activesupport/lib/active_support/json/variable.rb
      83f2ffcf
  20. 31 5月, 2012 1 次提交
  21. 30 5月, 2012 1 次提交
  22. 02 5月, 2012 1 次提交
  23. 01 5月, 2012 1 次提交
  24. 06 1月, 2012 1 次提交
  25. 02 1月, 2012 1 次提交
  26. 25 12月, 2011 1 次提交
  27. 21 12月, 2011 1 次提交
  28. 15 8月, 2011 1 次提交
  29. 02 4月, 2011 1 次提交
  30. 18 1月, 2011 1 次提交
  31. 15 1月, 2011 1 次提交
  32. 12 1月, 2011 1 次提交