JSON と思われる Web ページからコンテンツをダウンロードしています。次の形式の大きなファイルです。
"address1":"123 Street","address2":"Apt 1","city":"City","state":"ST","zip":"xxxxx","country":"US"
これらのエントリは約 1000 あり、各エントリは括弧内に含まれています。RestClient.get を使用してページをダウンロードすると (何らかの理由で open-uri が http 500 エラーをスローしていました)、データは次の形式になります。
\"address\1":\"123 Street\",\"address2\":\"Apt 1\",\"city\":\"City\",\"state\":\"ST\",\"zip\":\"xxxxx\",\"country\":\"US\"
次にjsonクラスを使用すると
parsed = JSON.parse(data_out)
データ構造内のエントリの順序と、各エントリ内のオブジェクトの順序の両方を完全に混乱させます。次に例を示します。
"address1"=>"123 Street", "city"=>"City", "country"=>"US", "address2"=>"Apt 1"
代わりに私が使用する場合
data_j=data_out.to_json
それから私は得る:
\\\"address\\\1":\\\"123 Street\\\",\\\"address2\\\":\\\"Apt 1\\\",\\\"city\\\":\\\"City\\\",\\\"state\\\":\\\"ST\\\",\\\"zip\\\":\\\"xxxxx\\\",\\\"country\\\":\\\"US\\\"
さらに、json クラスを使用するだけで、必要なエントリを選択できるようです。
parsed[1]["address1"]
=> "123 Street"
data_j[1]["address1"]
TypeError: can't convert String into Integer
from (irb):17:in `[]'
from (irb):17
from :0
何が起こっているのですか?json コマンドが機能しているので、それらを使用できると思いますが、オブジェクトのエントリと順序が混乱していることに当惑しています。