【发布时间】:2018-05-31 15:15:11
【问题描述】:
我试图解析这样一个简单的 JSON:
JSON.parse({"pong": "ok"})
失败了
2.4.0 :014 > JSON.parse({"pong": "ok"})
TypeError: no implicit conversion of Hash into String
from (irb):14
这里有什么问题?为什么要转换为 String ?
再次尝试,这次使用 OpenStruct:
2.4.0 :001 > pong = OpenStruct.new(pong: 'OK')
=> #<OpenStruct pong="OK">
2.4.0 :002 > JSON.parse(pong)
TypeError: no implicit conversion of OpenStruct into String
from (irb):2
一样吗? 谢谢
【问题讨论】:
-
你想达到什么目的?如果要从 ruby 哈希生成 JSON 字符串,则可以
require 'json',然后使用Hash#to_json -
我正在尝试从虚拟 Ping 控制器(Rails 5、Ruby 2.5.0)返回一些 JSON 响应,如下所示:
render json: <some object>。这就是为什么我尝试传递 JSON 或 OpenStruct 对象但没有成功的原因:OpenStruct.new(pong: 'OK'). -
render json: {pong: 'ok'}应该可以吗?? -
顺便说一下,您上面的控制台显示的是 ruby
2.4.0,而不是2.5.0。 -
@TomLord,不错,我在 5 秒后更新了
Gemfile5 秒以使用 2.5.0。是的,谢谢你,你的版本对我有用。
标签: json ruby hashmap openstruct