2011-11-25 19 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

は、単一引用符の一部であるJSONの宝石を使用して初期化して解析バックエンドを置き換えることができますそれ? –

+0

家のコントローラ、モデル、ビューコードをすべて表示してください。経路ファイルもしてください。 –

+0

@MichaelDurrant、私はルートが必要とは思わない。これはJSONの解析バグです。解析しようとしている元のJSONを投稿できますか?パーサーはそれを読みにくいので、解析する前に何かを行う必要があるかもしれません(ちょっと奇妙ですが)。 – d11wtq

答えて

2

私たちはRailsのデフォルトであるjson構文解析バックエンドを中止しました。デフォルトのバックエンドはYAMLベースであり、無駄な混乱を招く。いくつかの場合、ユニコードの解析と日付の解析が行われた後、バックエンドを設定で置き換えることができることが判明しました。

あなたはバックエンドとして使用することができますいくつかの宝石があります

ActiveSupport::JSON.backend = "JSONGem" 

、私達はちょうど

gem 'json' 
+0

私はalredy JSONGemバックエンドを使用しています。ここに私のコード activesupportのです:: JSON.backend OUTPUT MultiJson ::エンジン:: JsonGem – sparkle

+1

MultiJsonは、この問題の影響を受けません。 jsonの宝石やjson/pureを試してください – ffoeg

+0

JSON.parseがnet/httpのresponse.bodyを正しく解析するように、本当にありがとうございます。 –

関連する問題