2014-10-10 2 views
0

Я пишу обертки API и сталкиваюсь с проблемой, которую я точно не знаю, как ее решить.Faraday :: ParsingError - 757: неожиданный токен

Вот установка Фарадея:

@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

Я могу видеть, что это не является действительным объектом JSON в jsonlint (скриншот ниже).

jsonlint

мне нужно перенастроить новый экземпляр Фарадея для одного только этого вызова делать? Это кажется несколько избыточным, но он явно взорвался на классе FaradayMiddleware::ParseJson.

Мой тест возвращает RSpec это:

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

Любая помощь приветствуется.

ответ

1

Согласно to the JSON grammar голым числом не является JSON, это просто номер. Так что, похоже, что их API немного несовместим, и вам нужна другая конфигурация для этого метода.

+0

Спасибо, что подтвердили мои подозрения Ник. – Anthony

 Смежные вопросы

  • Нет связанных вопросов^_^