JSON data not decoded in Rails

Hello all,

I'm trying to send some json data from the browser to the server using prototype without success. On the server side ActiveSupport::JSON.decode isn't decoding the data.

What happens ? render :text => my_json might produce some odd output since you're just calling to_s on a hash which doesn't do anything very interesting. render :text => my_json.inspect() would produce more readable output

Fred

Hello Fred,

Thanks for the answer but the problem remains.

The "render :text => my_json" part is just a debug line I added. I'm interested in manipulating the json data before sending an answer to the browser. I've done what you said but my_json.inspect() returns the same output.

From what I gathered the my_json is returned as a String object instead of an Hash.

Example: (rdb:5) my_json = ActiveSupport::JSON.decode(params["_json"]) "%7B%22name%22%3A%20%22Violet%22%2C%20%22occupation%22%3A%20%22character%22%2C%2 0%22age%22%3A%2025%7D" (rdb:5) my_json.class String

If I use the same json string directly in the controller in Rails the decode works so it must have something to do with the way I'm creating the Ajax request, but I still don't know what I'm doing wrong.

Example: (rdb:5) my_json2 = ActiveSupport::JSON.decode("{name: 'Violet', occupation: 'character', age: 25 }") {"occupation"=>"character", "name"=>"Violet", "age"=>25} (rdb:5) my_json2.class Hash

Best regards, Migrate

Frederick Cheung wrote: