1

试图弄清楚为什么会这样

get '/json_test' do
  j = '{"key1": "val1"}'
  JSON.parse(j)
end

导致此错误

内部服务器错误

无法将数组转换为字符串

使用 pry gem 我可以在解析之前打断点。从那里我可以调用 JSON.parse(j) 并且它工作正常。

4

1 回答 1

2

因为您正在从路线提供代码。JSON.parse将 JSON 字符串转换为 Ruby 数据类型。Sinatra 路由的最后一个表达式应该是主体字符串,或者是符合 Rack [status_code, headers, body](或几乎)的数组。如果您希望路由接收 JSON,请尝试以下操作:

get '/json_test' do
  j = '{"key1": "val1"}'
  JSON.parse(j)
  halt 200
end

但它不应该是 GET,除非你要用身体中有意义的东西来回应。

于 2013-03-21T09:47:57.830 回答