convert json string to hash

14 views
Skip to first unread message

prabhu

unread,
May 8, 2014, 12:18:49 PM5/8/14
to rubyonra...@googlegroups.com
  I have a string object which is basically in a json format and while trying to print it shows in console as
  

    item =
     {
            "id": "4c9f83e4-f479-48d0-9f92-3fff70a8f6ba",
             "item": "{"business":"1114","class":"Demo","date":"01-01-2014","version":"","data":"dummy","name":"Finance"}"
       
        }

I need to get the values of business, class, date etc and pass it as params to my method. So I tried to convert it into hashes as below

    hash_item = JSON.parse (item)

and output in console shows as

    The converted hash item is
    {"guid"=>"4c9f83e4-f479-48d0-9f92-3fff70a8f6ba", "item"=>"{"business":"1114","class":"Demo","date":"01-01-2014","version":"","data":"Dummy","name":"Finance"}"}

But when I try to access the hash value for business as
`hash_item['item']['business']` it shows

> "business"

 since the value of item is a String in the hash_item. I am not sure whether my approach is correct or not. So is there any better idea or any inputs to retrieve the hash values . Please help.

Robert Walker

unread,
May 8, 2014, 3:07:42 PM5/8/14
to rubyonra...@googlegroups.com
prabhu wrote in post #1145452:
Let me try to explain by example...

JSON demo 1:

{
"id": "4c9f83e4-f479-48d0-9f92-3fff70a8f6ba",
"item": {
"business": "1114",
"class": "Demo",
"date": "01-01-2014"
}
}

item = "{\"id\": \"4c9f83e4-f479-48d0-9f92-3fff70a8f6ba\",\"item\":
{\"business\": \"1114\",\"class\": \"Demo\", \"date\": \"01-01-2014\"}}"

json = JSON.parse(item)
=> {"id"=>"4c9f83e4-f479-48d0-9f92-3fff70a8f6ba",
"item"=>{"business"=>"1114", "class"=>"Demo", "date"=>"01-01-2014"}}

json['id']
=> "4c9f83e4-f479-48d0-9f92-3fff70a8f6ba"

json['item']
=> {"business"=>"1114", "class"=>"Demo", "date"=>"01-01-2014"}

json['item']['business']
=> "1114"

json['item']['class']
=> "Demo"

JSON Demo 2:

{
"id": "4c9f83e4-f479-48d0-9f92-3fff70a8f6ba",
"item": "{"business": "1114","class":
"Demo", "date": "01-01-2014""
}"
}

item = "{\"id\": \"4c9f83e4-f479-48d0-9f92-3fff70a8f6ba\", \"item\":
\"{"business": "1114", "class":
"Demo", "date": "01-01-2014"}\"}"

json = JSON.parse(item)
=> {"id"=>"4c9f83e4-f479-48d0-9f92-3fff70a8f6ba",
"item"=>"{"business": "1114", "class":
"Demo", "date": "01-01-2014"}"}

json['id']
=> "4c9f83e4-f479-48d0-9f92-3fff70a8f6ba"

json['item']
=> "{"business": "1114", "class":
"Demo", "date": "01-01-2014"}"

json['item']['business']
=> "business"

It appears to me you're seeing something like "JSON Demo 2". What you
want is what you see in "JSON Demo 1".

--
Posted via http://www.ruby-forum.com/.
Reply all
Reply to author
Forward
0 new messages