Ruby on rails 3 将json字符串转换为哈希并在ruby中检索哈希项值

Ruby on rails 3 将json字符串转换为哈希并在ruby中检索哈希项值,ruby-on-rails-3,Ruby On Rails 3,我有一个字符串对象,基本上是json格式的,当我试图打印它时,它在控制台中显示为 item = { "id": "4c9f83e4-f479-48d0-9f92-3fff70a8f6ba", "item": "{"business":"1114","class":"Demo","date&q

我有一个字符串对象,基本上是json格式的,当我试图打印它时,它在控制台中显示为

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

    }
我需要获取business、class、date等的值,并将其作为参数传递给我的方法。所以我试着把它转换成如下的散列

hash_item = JSON.parse (item)
控制台中的输出显示为

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"}"}
但是当我尝试访问business as的哈希值时
hash_item['item']['business']
它显示

“业务”

因为item的值是hash_项中的字符串。我不确定我的方法是否正确。那么,有没有更好的方法或输入来检索散列值呢。请帮忙

更新代码:

实际上,我正在为我的应用程序实现一个带有right_aws gem的队列机制,队列项返回一个字符串格式的消息实例。因此,在我的控制器中,我访问队列对象作为

def next
    @receiver = @queue.pop()
    if @receiver.present?
            respond_with(@receiver)
    end
end
我的下一个.json.erb是

{
    "guid": "<%=@receiver.id%>",
     "item": "<%=generate_json_format(@receiver)%>"

}

你能给我们看看你的实际代码吗?你说,“我有一个字符串对象,它基本上是json格式的”,但除非它是有效的json,而不仅仅是“基本上是json格式的”,否则你会过得很不愉快。@Jordan我在原始帖子中更新了我的代码。。我不确定你是否需要更多的解释/澄清才能更好地理解。是的。。它是一个有效的json。我在JsonLint中粘贴了{“id”:“4c9f83e4-f479-48d0-9f92-3fff70a8f6ba”,“item”:“{“business”:“1114”,“class”:“Demo”,“date”:“01-01-2014”,“version”:““data”:“dummy”,“name”:“Finance”}”,并显示了有效的json格式。但问题是,item是一个带有哈希的字符串对象……我相信生成的json不正确。例如,您的方法
generate_json\u format
=>
替换为
,这是不需要的。如果您看到项的值是
{“business”:“1114”,“class”:“Demo”,“date”:“01-01-2014”,“version”:“data”:“dummy”,“name”:“Finance”}“
字符串而不是json,那么您将永远不会得到所需的结果。我认为您的json应该是这样的:
项={“guid”:“some_id”,“item”:{“business”:1114,“class”:“Demo”}
def generate_json_format(sender)
    (JSON.parse (sender.body.gsub('=>', ':'))).to_json
    end