Rails序列化JSON - >没有将Hash隐式转换为String

时间:2015-08-24 14:57:43

标签: ruby-on-rails ruby json

使用Curb gem从文件中收集了一些JSON,我将其中的一部分分配给实例变量:

self.json_stuff = {"title" => json["title"], "description" => json["description"], "image" => json["image"]}.to_json

然后以JSON:

的形式存储在数据库中
serialize :json_stuff, JSON
...
self.save

稍后我会检查是否存在json_stuff

return self.json_stuff.present?

并收到以下错误:

TypeError - no implicit conversion of Hash into String:
  json (1.8.3) lib/json/common.rb:155:in `initialize'
  json (1.8.3) lib/json/common.rb:155:in `new'
  json (1.8.3) lib/json/common.rb:155:in `parse'

我已经完成了代码,我知道文件中的JSON集合没有问题。

1 个答案:

答案 0 :(得分:1)

据我所知, present?方法是针对字符串来检查它们是否为空。如果你只想根据 json_stuff 的存在返回布尔值,你应该检查它是否是 nil ,例如

return self.json_stuff.nil?

self.json_stuff 的类型是 Hash 而不是 String