Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

This project is archived and is in readonly mode.

#as_json returning self?

#4375

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?

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

State: resolved
Milestone: none
Assigned to: Jeremy Kemper Jeremy Kemper
Importance: Low

Activity

  1. Jeremy Kemper
    Jeremy Kemper
    • 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.

    April 13th, 2010 @ 12:53 AM

  2. Rohit Arondekar
    Rohit Arondekar

    Any updates to this ticket?

    June 16th, 2010 @ 02:46 PM

  3. Jeremy Kemper
    Jeremy Kemper
    • State changed from new to resolved

    Was resolved by c1d73270717f30498f8f4d55d6695509107c2834

    June 17th, 2010 @ 09:52 PM