法拉第:: ParsingError - 757:意外的令牌

时间:2014-10-10 17:09:51

标签: ruby json faraday

我正在编写API包装器并遇到一个我不确定如何解决的问题。

这是法拉第设置:

@connection = Faraday.new(url: @api_url, params: params,
                                headers: default_headers,
                                ssl: { verify: true } ) do |faraday|
                                  faraday.use FaradayMiddleware::Mashify
                                  faraday.use FaradayMiddleware::ParseJson, content_type: /\bjson$/
                                  faraday.use FaradayMiddleware::FollowRedirects
                                  faraday.adapter Faraday.default_adapter
                                end

这适用于我正在制作的95%的API调用 - 它就像我需要的那样解析JSON而Mashify就是这样。大。

问题是当API返回未包装在JSON对象中的JSON值时。 API调用是这样的:

https://hacker-news.firebaseio.com/v0/maxitem.json

我可以看到这不是jsonlint中的有效JSON对象(截图如下)。

jsonlint

我是否需要单独为此呼叫重新配置新的法拉第实例?这看起来有些多余,但它明显地在FaradayMiddleware::ParseJson班上爆发。

我的RSpec测试返回:

Failure/Error: latest = client.max_item
     Faraday::ParsingError:
       757: unexpected token at '8438316'

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

根据to the JSON grammar,一个简单的数字不是JSON,它只是一个数字。所以,看起来他们的API有点不一致,你需要一个不同的配置。