当我在项目中加载Rails控制台时,我可以这样做:
{}.to_json
但我不能这样做:
"{}".from_json
即使我首先需要json gem,它也不起作用。是否存在from_json
方法?
答案 0 :(得分:4)
没有。 from_json
不存在。如果要从JSON字符串获取Ruby哈希,可以使用JSON#parse
方法。示例如下:
json = JSON.parse("{\"hello\": \"world\"}")
以上返回{"hello"=>"world"}
答案 1 :(得分:2)
您的{}.to_json
假设是正确的。但是,当我们获取JSON数据(或任何文本数据)并将其转换为某种本机结构时,我们称该进程正在解析。解析一些文本数据并使用该数据初始化其属性的类的实例方法将是奇怪的 - 有点不合适。相反,您通常看到的是静态工厂方法(在Ruby中称为类方法),如:
JSON.parse "{}"
这将在Ruby中返回一个哈希值。
答案 2 :(得分:0)
不,如下文及上文所述,.from_json
方法不存在。但是你自己实现起来很简单:
require 'json'
class String
def from_json
JSON.load(self) rescue false
end
end
答案 3 :(得分:0)
刚发生这件事。 from_json现在在框架中。
来自文档...
class Person
include ActiveModel::Model
include ActiveModel::AttributeMethods
include ActiveModel::Serializers::JSON
attr_accessor :name, :age, :awesome
def attributes=(hash)
hash.each do |key, value|
send("#{key}=", value)
end
end
def attributes
instance_values
end
end
我通常用它来将JSON序列化为ActiveModel对象......
json.each do |object|
object = object.to_json
myModel = MyModel.new
myModel.from_json(object)
end
" from_json"错误报告有点糟糕。方法,如果我处理格式错误的JSON,我会得到未定义的方法错误。
多年以后,HTH!