ruby解析HTTParty数组 - json

时间:2011-07-21 19:45:43

标签: ruby arrays json httparty

对Ruby来说还是新手 - 如果有人问我,我会事先道歉。

我正在使用HTTParty从API获取数据,并且它返回了一个JSON数据数组,我无法弄清楚如何解析。

#<Net::HTTPOK:0x1017fb8c0>
{"ERRORARRAY":[],"DATA":[{"ALERT":1,"LABEL":"hello","WATCHDOG":1},{"LABEL":"goodbye","WATCHDOG":1}

我想第一个问题是我真的不知道我在看什么。当我response.class时,我得到HTTParty::Response。它似乎是数组中的Hash?我不确定。无论如何,我想要一种方法来为每个单独的数组获取“LABEL”,因此结果将是"hello", "goodbye".我将如何这样做?

3 个答案:

答案 0 :(得分:1)

你不需要解释它。您可以做的是用'=&gt;'替换':'并评估它。

示例:假设您有["one":"a","two":"b"],您可以将s设置为等于该字符串,并且eval s.gsub(/^\[/, '{').gsub(/\]$/, '}').gsub('":', '"=>')将产生红宝石哈希(检查显示{“one”=&gt;“a”,“两个 “=&gt;” 中b“})

或者,你可以做这样的事情

require 'json'

string_to_parse = "{\"one\":\"a\",\"two\":\"b\"}"

parsed_and_a_hash = JSON.parse(string_to_parse)

parsed_and_a_hash是一个哈希!

答案 1 :(得分:0)

如果是JSON,那么最好的办法是安装一个处理JSON格式的库。重新发明轮子真的没有意义(虽然 很有趣)。请查看this文章。

如果您知道JSON数据将始终保持完全相同的格式,那么您可以在没有JSON gem的情况下管理相对简单的内容。但我不确定这是值得的麻烦。

答案 2 :(得分:0)

如果您正在努力使用json gem,请考虑使用Crack gem。它还具有解析xml的附加好处。

require 'crack'
my_hash_array = Crack::JSON.parse(my_json_string)

my_hash_array = Crack::XML.parse(my_xml_string)