我正在从似乎在 JSON 中的网页下载内容。它是一个大文件,格式如下:
"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 命令正在工作,我可以使用它们,但令人不安的是它扰乱了对象的条目和顺序。