我的Sinatra服务器正在接收JSON字符串作为POST请求正文的一部分。读取请求正文并将其转换为这样的字符串:
request.body.rewind
body_str = request.body.read.force_encoding('utf-8')
当我尝试使用以下命令将该字符串转换为哈希时:
webhook_hash = JSON.parse(body_str)
logger.info(webhook_hash)
webhook_hash
为nil,但解析器不会引发任何错误。
我已使用以下方法验证body_str
是有效的JSON:
STDOUT
并使用jsonlint JSON.parse
中打开文件。使用bundle exec
运行以下命令会得到正确的预期JSON:require 'json'
json_from_file = File.read("webhook-body.json")
obj = JSON.parse(json_from_file)
我花了大约3个小时来做这件事,由于没有在任何地方抛出异常并且我不知道可能是什么原因,所以在这一点上我非常沮丧。
我想这个问题与Sinatra / Rack环境有关。我对Ruby的知识还比较初级,所以非常感谢您调试或修复此问题的任何指示!