I have searched in this group for a while, and it seems no one face
the same problem like me yet. I am developing a rest web service(post
method) that requires json data format from my javascript client
application. I don’t know how to handle since I could not get data
that is being sent. In my controller, params variable got messed with
key and value. I want to know the way how to parse data from this to
ruby object. Any idea is really appreciated.
On Apr 2, 2009, at 3:40 AM, Chamnap wrote:
I have searched in this group for a while, and it seems no one face
the same problem like me yet. I am developing a rest web service(post
method) that requires json data format from my javascript client
application. I don’t know how to handle since I could not get data
that is being sent. In my controller, params variable got messed with
key and value. I want to know the way how to parse data from this to
ruby object. Any idea is really appreciated.
Get the JSON gem for starters.
sudo gem install json
Then in your code:
require ‘rubygems’
gem ‘json’
require ‘json’
-Rob
On Apr 2, 3:18 pm, Rob B. [email protected] wrote:
Get the JSON gem for starters.
sudo gem install json
Then in your code:
require ‘rubygems’
gem ‘json’
require ‘json’
I have followed what you said, but still doesn’t work. The params
variable still contains weird string like: {“{"first_name":"chamnap
","last_name":"chhorn"}”=>nil, “action”=>“create”,
“controller”=>“users”}. Therefore, I could not access through either
params[:first_name] or params[:last_name].
Chamnap
Thanks
I also have founded a method in ActiveSupport::JSON.decode, and it
does work the same thing as you did show me. What do you think?
Chamnap
On Apr 2, 2009, at 9:27 PM, Chamnap wrote:
require ‘rubygems’
gem ‘json’
require ‘json’I have followed what you said, but still doesn’t work. The params
variable still contains weird string like: {“{"first_name":"chamnap
","last_name":"chhorn"}”=>nil, “action”=>“create”,
“controller”=>“users”}. Therefore, I could not access through either
params[:first_name] or params[:last_name].Chamnap
irb> require ‘rubygems’
=> true
irb> gem ‘json’
=> true
irb> require ‘json’
=> true
irb> raw = “{"first_name":"chamnap","last_name":"chhorn"}”
=> “{"first_name":"chamnap","last_name":"chhorn"}”
irb> puts raw
{“first_name”:“chamnap”,“last_name”:“chhorn”}
=> nil
irb> JSON(raw)
=> {“first_name”=>“chamnap”, “last_name”=>“chhorn”}
irb> cooked = JSON.parse(raw)
=> {“first_name”=>“chamnap”, “last_name”=>“chhorn”}
irb> raw
=> “{"first_name":"chamnap","last_name":"chhorn"}”
irb> cooked
=> {“first_name”=>“chamnap”, “last_name”=>“chhorn”}
irb> raw.class
=> String
irb> cooked.class
=> Hash
irb> cooked[“first_name”]
=> “chamnap”
irb> cooked[:first_name]
=> nil
Note that JSON.parse is going to return a normal Ruby Hash, not a
Rails ActiveSupport HashWithIndifferentAccess. You’ll have to use
“first_name” as the key, not :first_name. Show the code that you’re
trying to use that’s pulling that whole string into a key of the
params hash.
-Rob