Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails MultiJson::DecodeError在{“电子邮件”:“处出现意外标记”;foo@bar.com";}_Ruby On Rails_Ruby_Json_Api_Callback - Fatal编程技术网

Ruby on rails MultiJson::DecodeError在{“电子邮件”:“处出现意外标记”;foo@bar.com";}

Ruby on rails MultiJson::DecodeError在{“电子邮件”:“处出现意外标记”;foo@bar.com";},ruby-on-rails,ruby,json,api,callback,Ruby On Rails,Ruby,Json,Api,Callback,我正在开发一个新的RubyonRails3.2应用程序。 此应用程序将定期接收带有统计信息的json回调。 我收到的回调不完全有效。json规则由换行符分隔 回调帖子的内容类型头为application/json,每行仅包含一个json字符串,每行表示一个事件。请注意,当前的帖子标题将此帖子定义为application/json,尽管它不是;每一行都是一个有效的JSON字符串,但整个文章正文不是。例如: 这是回调的一个示例: {"email":"foo@bar.com","timestamp":

我正在开发一个新的RubyonRails3.2应用程序。 此应用程序将定期接收带有统计信息的json回调。 我收到的回调不完全有效。json规则由换行符分隔

回调帖子的内容类型头为application/json,每行仅包含一个json字符串,每行表示一个事件。请注意,当前的帖子标题将此帖子定义为application/json,尽管它不是;每一行都是一个有效的JSON字符串,但整个文章正文不是。例如:

这是回调的一个示例:

{"email":"foo@bar.com","timestamp":1322000095,"unique_arg":"my unique arg","event":"delivered"}
{"email":"foo@bar.com","timestamp":1322000097,"unique_arg":"my unique arg","event":"click"}
{"email":"foo@bar.com","timestamp":1322000096,"unique_arg":"my unique arg","event":"open"}
当我收到这个回调时,我的Rails应用程序崩溃并出现“MultiJson::DecodeError”

743:在“{”电子邮件“:”处出现意外令牌foo@bar.com“,“时间戳”:1322000096,“唯一参数”:“我的唯一参数”,“事件”:“打开”}”

我认为应用程序检测到application/json头并尝试自动解析它。 如何将其转换为有效的JSON对象,以便在控制器中使用


谢谢。

无法通过在Rails shell中同时使用ActiveSupport::JSON.decode和MultiJson.decode复制和粘贴错误消息令牌来重现您的问题。轨道3.2.1

还有其他线索吗?

gem文件中的gem'yajl ruby'和 需要gem文件中的'yajl/json_gem'config/application.rb

宝石'yajl红宝石' 它用于在流或字符串之间解析和编码多个JSON对象


并且在应用程序中需要“yajl/json_gem”。rb

此问题可能是由于响应体编码为ISO-8859-1而不是UTF-8。客户端可能的修复方法是使用ruby“iconv”编码方法将其转换回UTF-8

将元素放在括号中:

   [{"email":"foo@bar.com","timestamp":1322000095,"unique_arg":"my unique arg","event":"delivered"},
    {"email":"foo@bar.com","timestamp":1322000097,"unique_arg":"my unique arg","event":"click"},
    {"email":"foo@bar.com","timestamp":1322000096,"unique_arg":"my unique arg","event":"open"}]`

这是可行的,但我不明白为什么我一开始会出错!