根据ruby-doc和apidock,您可以使用to_json
和json_create
序列化和非序列化异常。
但是在浪费了一些时间试图使用它们之后,我仍然没有找到一种方法。
调用exc.to_json
得到一个空的哈希,而Exception.json_create(hash)
得到这个错误:undefined method 'json_create' for Exception:Class
我想我可以很容易地重新创建这些功能,因为源代码是可用的,但我宁愿了解我做错了什么......任何想法?
3条答案
按热度按时间wfveoks01#
JSON模块默认情况下不扩展Exception。你必须使用
require "json/add/exception"
。这在Ruby JSON模块文档的JSON Additions部分有说明。字符串
查看
ext/json/lib/json/add
in the Ruby source看看哪些类是这样工作的。如果你使用require "json/add/core"
,它将加载Date、DateTime、Exception、OpenStruct、Range、Regexp、Struct、Symbol、Time等的JSON扩展。要反转该过程,可以将
create_additions: true
选项传递给JSON.parse
:型
s5a0g9ez2#
Jordan的回答是正确的。如果你有一个案例,例如,你需要序列化一个Exception并发送到ActiveJob,在那里你想要重建它,那么你需要使用
.as_json
方法。字符串
你需要阅读source code来理解为什么
Exception.json_create(string).message
返回m
:)r6vfmomb3#
同样重要的是要注意,
Exception.json_create
示例没有保留错误类。字符串
试试看:
型