JSON-анализ строки JavaScript - PullRequest
0 голосов
/ 28 декабря 2018

При попытке проанализировать строку json с помощью JSON.parse я получаю неожиданную ошибку токена

require "net/http"
require "uri"
url = URI.parse("https://url-goes-here")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
req = Net::HTTP::Get.new(url.request_uri)
req['Accept'] = 'application/json'
res = Net::HTTP.new(url.host, url.port).start do |http|
    http.request(req)
end
json = JSON.parse(res)
puts json

1 Ответ

0 голосов
/ 28 декабря 2018

Данные в ответ выглядят как JSONP, довольно старый метод выполнения rpc.Вместо того, чтобы возвращать простой JSON, он выводит some_js_callback_function_name({here_goes: the_json}), обычно есть также параметр, который управляет именем функции.

Чтобы получить json из него - обрежьте вызов функции перед анализом:

json_data = res.body.gsub(/\A[^(]+\(/, '').gsub(/\)\s*\z/, '')
json = JSON.parse(json_data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...