JSON.parse,Sinatra和Webrick

时间:2013-03-21 09:37:29

标签: json sinatra

试图找出原因

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

导致此错误

  

内部服务器错误

     

无法将Array转换为String

使用pry gem我可以在解析之前找到一个断点。从那里我可以调用JSON.parse(j),它工作正常。

1 个答案:

答案 0 :(得分: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,除非你要回应身体中有意义的东西。