2011-11-25 57 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 –