2012-02-17 24 views
3

我正在開發一個新的Ruby on Rails 3.2應用程序。 此應用程序將收到一個定期json回調統計。 我收到的回調不完全有效。 json規則由換行符分隔。MultiJson :: DecodeError意外的令牌在{「email」:「[email protected]」}

回調POST具有application/json的內容類型頭,每行只包含一個JSON字符串,每行代表一個事件。請注意,POST頭文件現在定義爲application/json,儘管它不是;每一行都是有效的JSON字符串,但是整個POST正文不是。例如:

這是回調的例子:

{"email":"[email protected]","timestamp":1322000095,"unique_arg":"my unique arg","event":"delivered"} 
{"email":"[email protected]","timestamp":1322000097,"unique_arg":"my unique arg","event":"click"} 
{"email":"[email protected]","timestamp":1322000096,"unique_arg":"my unique arg","event":"open"} 

當我收到這個回調我的Rails應用程序崩潰與 「MultiJson :: DecodeError」

743 :意外的令牌'{"電子郵件":" [email protected] ","時間戳":1322000096," unique_arg ":"我唯一ARG ","事件":"開放"}」

我認爲應用程序檢測應用/ JSON頭,並嘗試自動解析它。 我怎樣才能將其轉換爲有效的JSON對象,所以我可以在我的控制器中使用它?

謝謝。

回答

0

無法通過在Rails shell中使用ActiveSupport :: JSON.decode和MultiJson.decode複製並粘貼錯誤消息令牌來重現您的問題。 Rails 3.2.1

還有其他線索嗎?

2

將 寶石 'yajl-紅寶石' 中的Gemfile和 需要 'yajl/json_gem' 配置/ application.rb中

+1

這個工作,但我不明白爲什麼我收到錯誤擺在首位! – alemur 2012-07-26 17:03:49

2

在寶石文件聲明 寶石 'yajl-紅寶石' 它用於解析和編碼多個JSON對象與流或字符串連續。

並要求在application.rb中

-1

這個問題可能是 'yajl/json_gem' 由於ISO-8859-1,而不是UTF-8編碼的響應體。客戶端可能的修復方法是使用ruby'iconv'編碼方法將其轉換回UTF-8。括號

1

認沽元素:

[{"email":"[email protected]","timestamp":1322000095,"unique_arg":"my unique arg","event":"delivered"}, 
    {"email":"[email protected]","timestamp":1322000097,"unique_arg":"my unique arg","event":"click"}, 
    {"email":"[email protected]","timestamp":1322000096,"unique_arg":"my unique arg","event":"open"}]` 
相關問題