将json字符串转换为哈希值并检索ruby中的哈希值项

时间:2014-05-08 15:52:45

标签: ruby-on-rails-3

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

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

    }

我需要获取业务,类,日期等的值,并将其作为params传递给我的方法。所以我尝试将其转换为哈希,如下所示

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"}"}

但是当我尝试访问业务的哈希值时 hash_item['item']['business']显示

  

"业务"

因为item的值是hash_item中的String。我不确定我的方法是否正确。那么有没有更好的想法或任何输入来检索哈希值。请帮忙。

更新代码:

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

def next
    @receiver = @queue.pop()
    if @receiver.present?
            respond_with(@receiver)
    end
end

我的next.json.erb将是

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

}

生成json格式的助手是

def generate_json_format(sender)
    (JSON.parse (sender.body.gsub('=>', ':'))).to_json
    end

0 个答案:

没有答案