如何在 Ruby 中将流转换为对象

How to convert a stream into an object in Ruby

我正在尝试从我的 jQuery 文件发出 PUT 提取请求。服务器给我 500,因为我的控制器无法使用提取。 这是以 request.body 的形式发送到我的 .rb 文件的流:

request.body == #<StringIO:0x00005597c3b69fa8>
request.body.string == "{\"name\":\"New School\",\"office_id\":2,\"inactive\":false}"

我试过了..

load(request.body.string)

但是这个 returns 加载错误:

LoadError: cannot load such file -- {"name":"New School","office_id":2,"inactive":false}

还有..

parse(request.body.string)

结果是

undefined method `parse' for #<CrEventsApp:0x00005597c3bbf098>

是否有一种方法可以将此信息解析回哈希?我可以自己用一些正则表达式和 .split() 解析字符串,将数据转换为可用格式,但我想要一个更简洁、更可靠的解决方案。

JSON.parse 应该可以解决问题:

JSON.parse(request.body.string)
=> {"name"=>"New School", "office_id"=>2, "inactive"=>false}