0

Ruby 还是新手——如果有人问过这个问题,我提前道歉。

我正在使用 HTTParty 从 API 获取数据,它返回的 JSON 数据数组我不太清楚如何解析。

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

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

4

3 回答 3

1

你不需要按说解析它。你可以做的是用 '=>' 替换 ':' 并评估它。

示例:假设您有["one":"a","two":"b"],您可以将 s 设置为等于该字符串并且 doeval s.gsub(/^\[/, '{').gsub(/\]$/, '}').gsub('":', '"=>')将产生一个 ruby​​ 哈希(检查显示 {"one"=>"a", "two"=>"b"})

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

require 'json'

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

parsed_and_a_hash = JSON.parse(string_to_parse)

parsed_and_a_hash 是一个哈希!

于 2011-07-21T20:29:20.980 回答
0

如果那是 JSON,那么最好的办法是安装一个处理 JSON 格式的库。重新发明轮子真的没有意义(尽管它有趣)。看看这篇文章。

如果您知道 JSON 数据将始终采用完全相同的格式,那么您可能会在没有 JSON gem 的情况下管理一些相对简单的事情。但我不确定这是否值得麻烦。

于 2011-07-21T20:32:09.047 回答
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)
于 2011-07-27T18:10:34.853 回答