对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".
我将如何这样做?
答案 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)