This project is archived and is in readonly mode.

#4375 ✓resolved
Brian Lopez

#as_json returning self?

Reported by Brian Lopez | April 12th, 2010 @ 10:52 PM

I may have completely misunderstood what the #as_json method is for, but it was my assumption that it's supposed to return a JSON-mappable version of the object.

Meaning, it should return a String, Fixnum, TrueClass, FalseClass, NilClass, Array or Hash. In literally every example of it's use those are the types that are returned - which makes perfect sense.

But classes like Regexp and BigDecimal return self? If a JSON library checks to see if the object responds to #as_json, and calls it if so, it'll infinitely loop.

Should BigDecimal return to_f? And Regexp to_s?

Comments and changes to this ticket

  • Jeremy Kemper

    Jeremy Kemper April 13th, 2010 @ 12:53 AM

    • Assigned user set to “Jeremy Kemper”

    That's right, though as_json maps to any objects which are JSON-encodable (respond to encode_json), not just objects that directly correspond to JSON primitives.

    BigDecimal is Numeric which encodes itself using to_s.

    Regexp encodes itself using inspect, which is arguably wrong since it may not be valid JSON in some cases.

  • Rohit Arondekar

    Rohit Arondekar June 16th, 2010 @ 02:46 PM

    Any updates to this ticket?

  • Jeremy Kemper

    Jeremy Kemper June 17th, 2010 @ 09:52 PM

    • State changed from “new” to “resolved”

    Was resolved by c1d73270717f30498f8f4d55d6695509107c2834

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

<h2 style="font-size: 14px">Tickets have moved to Github</h2>

The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>

Referenced by

Pages