我在Ruby中使用JSON,每次运行程序时,都会收到"意外令牌的错误。"我不确定发生了什么,我尝试从其他有相同问题的用户那里阅读信息,但我似乎并不知道发生了什么。
这是我的.rb页面的代码:
def show
URI.parse('http://robotrevolution.net/interface/int_order_options.php')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = false
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
request = Net::HTTP::Post.new(uri.request_uri, initheader = {'Content-Type' => 'application/json'})
request.basic_auth 'username', 'password'
response = http.request(request)
if response.code == "200"
result = response.body.to_json.first
@oc_order_options = JSON.parse(result, :quirks_mode => true)
else
"ERROR"
end
return @oc_order_options
end
这是我的展示页面的代码:
<h1> Display </h1>
<%= @oc_order_options['name'][0]['value'] %>
我非常感谢任何帮助我弄清楚发生了什么的回复,谢谢。
答案 0 :(得分:1)
错误在于:
result = response.body.to_json.first
尝试在此行之前放置puts response.body.inspect
,找出数据返回的内容并相应地修改上面的行,以便下一行
JSON.parse(result, :quirks_mode => true)
会成功。
答案 1 :(得分:0)
mudasobwa是对的,错误发生在result = response.body.to_json.first
信息的格式已经在json中 - 这就像将它转换为json一样,它不喜欢它。
所以在JSON.parse(result, :quick_mode => true)
上我添加了.first到这一行并摆脱了另一行。
所以简单地说,它看起来像这样:
def show
URI.parse('http://robotrevolution.net/interface/int_order_options.php')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = false
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
request = Net::HTTP::Post.new(uri.request_uri, initheader = {'Content-Type' => 'application/json'})
request.basic_auth 'username', 'password'
response = http.request(request)
if response.code == "200"
result = response.body.to_json.first
@oc_order_options = JSON.parse(result, :quirks_mode => true)
else
"ERROR"
end
return @oc_order_options
端
现在它看起来像这样:
def show
URI.parse('http://robotrevolution.net/interface/int_order_options.php')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = false
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
request = Net::HTTP::Post.new(uri.request_uri, initheader = {'Content-Type' => 'application/json'})
request.basic_auth 'username', 'password'
response = http.request(request)
if response.code == "200"
result = response.body
@oc_order_options = JSON.parse(result, :quirks_mode => true).first
else
"ERROR"
end
return @oc_order_options
end
谢谢!