Weird error in Hash.to_json

{}.to_json()
=> “{}”

{}.to_json({})
TypeError: wrong argument type Hash (expected Data)
from (irb):4:in `to_json’
from (irb):4

This is in Ruby 1.8.6, Rails 2.1.1…but for some reason reloading the
source fixes it:

load ‘/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/json/encoders/hash.rb’
=> []

{}.to_json({})
=> “{}”

I’m baffled…what’s a “Data” and why should to_json be expecting one?

On 8 Sep 2008, at 03:10, Mike Travers wrote:

source fixes it:

load ‘/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/
active_support/json/encoders/hash.rb’
=> []

{}.to_json({})
=> “{}”

I’m baffled…what’s a “Data” and why should to_json be expecting one?

I vaguely recall seeing something similar if you have one of the other
libraries around that provide json conversions - they and
ActiveSupport both try and define to_json and things end up in a mess
when they both try and do it.

Fred

On Sep 7, 7:10 pm, Mike Travers [email protected] wrote:

This is in Ruby 1.8.6, Rails 2.1.1…but for some reason reloading the
source fixes it:

load ‘/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/json/encoders/hash.rb’
=> []
{}.to_json({})
=> “{}”

I’m baffled…what’s a “Data” and why should to_json be expecting one?

I found that including a line
require ‘json/pure’
fixes it…apparently the regular json package (which uses a C
library) is buggy.