2011-07-21 16 views
0

Rubyにまだ新機能 - これが尋ねられた場合は、事前に謝罪します。ruby​​ parse HTTParty array - json

私はAPIからデータを取得するためにHTTPartyを使用していますが、JSONデータの配列を戻しているため、解析する方法がわかりません。

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

私は最初の質問は私が実際に私が何を見ているのかわかりません。私がするときresponse.class私はHTTParty::Responseを得る。それは配列内のハッシュのようですか?私はわかりません。とにかく、別々の配列ごとに "LABEL"を取得する方法が必要なので、結果は"hello", "goodbye".になります。どうすればいいですか?

答えて

1

あなたはそれを解析する必要はありません。あなたができることは、 ':'を '=>'に置き換えて評価することです。例えば、["one":"a","two":"b"]があるとすれば、sをその文字列と等しくすることができ、eval s.gsub(/^\[/, '{').gsub(/\]$/, '}').gsub('":', '"=>')はルビハッシュを生成します({"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のような何かができることは、ハッシュです!

+0

これは素晴らしく、どこに向かうのかを確認します。何らかの理由で、私はjsonの宝石(他のすべての問題)をインストールすることはできません。正規表現を使ってルビーのハッシュを取得すると、どのようにしてハッシュの要素にアクセスできますか?私はどのようにして1つのキーの価値をすべて列挙しますか? – rick

+0

私の例で言えば、ハッシュを持っていれば、キー "1"に対応する値に 'parsed_and_a_hash [" one "]'でアクセスします。すべてのキーを見るには、以下のように "keys"メソッドを呼び出します: 'parsed_and_a_hash.keys' –

0

JSONの場合は、JSON形式を処理するライブラリをインストールすることをお勧めします。ホイールを再発明することは実際には何の意味もありません(ただし、です)。 thisの記事をご覧ください。

JSONデータが常に同じ形式であることが分かっている場合は、JSON gemなしで比較的単純なものを管理することができます。しかし、私はそれが面倒の価値があるとは確信していません。

0

jsonの宝石に苦労している場合は、クラックの宝石の使用を検討してください。 xmlの解析も追加されています。

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

my_hash_array = Crack::XML.parse(my_xml_string)