首页 > 解决方案 > JSON解析javascript字符串

问题描述

尝试使用 JSON.parse 解析 json 字符串时出现意外令牌错误

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

标签: ruby-on-railsjson

解决方案


响应中的数据看起来像 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)

推荐阅读