如何在ruby中将ruby格式的json字符串转换为json哈希?

时间:2014-05-14 05:33:00

标签: ruby

我想访问类似哈希对象的json字符串,以便我可以使用像temp["anykey"]这样的键值来访问json。如何将ruby格式的json字符串转换为json对象?

我有以下json字符串

temp = '{"accept"=>"*/*", "host"=>"localhost:4567", "version"=>"HTTP/1.1", 
       "user_agent"=>"curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3", 
       "http_token"=>"375fe428b1d32787864264b830c54b97"}'

4 个答案:

答案 0 :(得分:9)

您知道JSON.parse吗?

require 'json'

my_hash = JSON.parse('{"hello": "goodbye"}')
puts my_hash["hello"] => "goodbye"

答案 1 :(得分:5)

如果你将这个字符串解析为ruby对象,它将返回一个ruby Hash对象,你可以这样得到它 您可以为Ruby

安装 json gem
gem install json

您需要在代码中使用gem:

require 'rubygems'
require 'json'

然后你可以像这样解析你的JSON字符串:

ruby_obj = JSON.parse(json_string)

还有其他JSON for Ruby实现:

答案 2 :(得分:2)

您可以在 temp json字符串上尝试 eval 方法

示例:

eval(temp)

这将返回以下哈希

{"accept"=>"*/*", "host"=>"localhost:4567", "version"=>"HTTP/1.1", "user_agent"=>"curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3", "http_token"=>"375fe428b1d32787864264b830c54b97"}

希望这会有所帮助。

由于

答案 3 :(得分:1)

要将Ruby哈希转换为json字符串,只需调用to_json即可。

require 'json'

temp = {"accept"=>"*/*", "host"=>"localhost:4567", "version"=>"HTTP/1.1", 
   "user_agent"=>"curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3", 
   "http_token"=>"375fe428b1d32787864264b830c54b97"}
temp.to_json