我正在從似乎處於JSON的網頁下載內容。它是具有以下格式的大文件:Ruby中奇怪的JSON解析問題
"address1":"123 Street","address2":"Apt 1","city":"City","state":"ST","zip":"xxxxx","country":"US"
這些條目大約有1000個,其中每個條目都包含在括號內。當我下載使用RestClient.get(開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命令正在工作,我可以使用它們,但令人不安的是它擾亂了對象的條目和順序。
對象是無序的。沒有「加擾」,因爲沒有定義的順序。 – 2013-04-25 19:13:14
to_json方法只是將內容轉儲到一個json字符串,這就是爲什麼你不能按照你想要的方式索引它。你基本上只是使用該方法將你的json字符串轉換成json字符串。 – 2013-04-25 20:41:46
啊我看到了,謝謝你解釋了兩者的區別 – shadowprice 2013-04-26 12:52:39