JSON a scăpat incorect Ruby 1.9.3 Rails 3.1.4

Am o problemă de codare JSON pe aplicația mea de șine:

h = {:status=>200, :promotions=>[{:id=>719788, :title=>"test"}]}

și rezultatul

puts h.to_json

este

{"status":200,"promotions":{"{\"id\"=>719788, \"title\"=>\"test\"}":null}}

Which este not the expected result!

Theste este the correct result:

{"promotions":[{"title":"test","id":719788}],"status":200}

Ce ar putea genera o astfel de eroare în generația JSON?

ruby -v
ruby 1.9.3p194 (2012-04-20) [x86_64-linux]
rails -v
Rails 3.1.4
gem lestet ==> json (1.6.6, 1.5.4)
0
acestea sunt rezultatele comenzilor în consola șinelor. Acest lucru este ciudat, pentru că a lucrat înainte și cred că cineva a făcut ceva undeva ... dar nu găsesc exact ce
adăugat autor EricLarch, sursa
E ciudat. Acesta este codul exact pe care îl utilizați în aplicația dvs.?
adăugat autor Jordan Running, sursa

1 răspunsuri

Ok, acest lucru nu are nimic de a face cu o configurație de șine sau rubin ... Unul dintre ingineri a adăugat acest lucru în extensiile core_ pentru Array

def to_hash # Recursively convert array to hash 
 inject({}) do |hash, (key, value)|
   value = value.to_hash if value.kind_of?(Array)
   hash.merge!({key => value})
 end
end

Cred că pot șterge această întrebare mâine

0
adăugat