2011-11-25 56 views
0

我在Dropbox文件夾中保存了名爲array.json的文件,並通過Dropbox API訪問該文件。所有工作正常,但是當我檢索JSON內容我不能JSON.parse該字符串!743:在Ruby on Rails中出現意外的令牌

session = DropboxSession.new(APP_KEY, APP_SECRET) 
session.set_access_token(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET) 
client = DropboxClient.new(session, ACCESS_TYPE) 

json = client.get_file(DIRECTORY + '/array.json') 

@json = JSON.parse JSON 錯誤:

743:在「{ 「諾姆」 意外的標記: 「馬里奧羅西」, 「C.F.」 :「ABCDEFGHILMNOP」, 「預訂協助」:「MARIO」, 「預訂狀態」:「25/11/2011」}' JSON字符串有效!如果我複製這個字符串並將其粘貼(手動)作爲JSON.parse()中的參數,則json被正確解析!所以我認爲是一個編碼問題......但我錯在哪裏?

+1

是單引號部分它? –

+0

請向我們展示家中的所有控制器,型號和視圖代碼。請路由文件。 –

+0

@MichaelDurrant,我不認爲路線是必要的。這是一個JSON解析錯誤。你可以發佈你想分析的原始JSON嗎?看起來解析器很難閱讀它,所以也許你需要在解析它之前先用它做一些事情(儘管這聽起來有點奇怪)。 – d11wtq

回答

2

我們已經放棄了在Rails中默認的json解析後端。默認的後端是基於YAML的,並且是一個無用的混亂。在解析unicode的幾個問題以及某些情況下的日期之後,我們發現可以通過配置來替換後端。

可以代替解析後端在初始化

ActiveSupport::JSON.backend = "JSONGem" 

有可以用來作爲後端幾個寶石,我們只是使用JSON寶石

gem 'json' 
+0

我alredy使用JSONGem後端。這裏是我的代碼 的ActiveSupport :: JSON.backend 輸出 MultiJson ::發動機:: JsonGem – sparkle

+1

MultiJson也不能倖免於這個問題。試試json gem和/或json/pure – ffoeg

+0

非常感謝你要求'json/pure',所以JSON.parse正確解析了net/http的response.body –