将字符串解析为JSON / Hash

时间:2011-11-16 09:47:05

标签: ruby string

我正在尝试将以下字符串转换为散列或json。

我如何在ruby中执行此操作?

[{"place":null,"coordinates":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,
"favorited":false,"truncated":false,"created_at":"Wed Nov 16 08:00:46 +0000 2011","retweet_count":0,"in_reply_to_screen_name":null,
"user":{"profile_background_image_url":"http:\/\/a1.twimg.com\/profile_background_images\/190989640\/afcx.jpg","protected":false,
"statuses_count":23414,"profile_link_color":"FF0000"},"retweeted":false,"in_reply_to_status_id_str":null,"in_reply_to_user_id_str":null,"contributors":null,"geo":null}]

我正在运行ruby1.8.7。

1 个答案:

答案 0 :(得分:4)

你看起来已经是JSON了,所以我假设你正在寻找一个Ruby Hash。如果是这样,那么这应该有效:

获取一个JSON库,我使用gem install json_pure,这是一个原生的Ruby实现(有一个更快的,基于C的版本,但你不会注意到差异,除非你的JSON字符串非常大或你有一个他们很多)。

然后

require 'json'
arr = JSON(your_json_string_here)

请注意,您提供的字符串是一个单元素数组,其中包含将映射到Ruby Hash的内容。如果你只想要哈希:

the_hash = arr[0]   # or maybe arr.first

我明白了:

{"coordinates"=>nil, "created_at"=>"Wed Nov 16 08:00:46 +0000 2011",
 "truncated"=>false, "favorited"=>false, "in_reply_to_user_id_str"=>nil, 
 "contributors"=>nil, in_reply_to_status_id_str"=>nil, "retweet_count"=>0, 
 "geo"=>nil, "retweeted"=>false, "in_reply_to_user_id"=>nil,
 "user"=>{"profile_link_color"=>"FF0000", "protected"=>false,
 "statuses_count"=>23414,
 "profile_background_image_url"=>"http://a1.twimg.com/profile_background_images/190989640/afcx.jpg"}, 
"in_reply_to_screen_name"=>nil, place"=>nil, "in_reply_to_status_id"=>nil}