当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Psych.safe_load用法及代码示例


本文简要介绍ruby语言中 Psych.safe_load 的用法。

用法

safe_load(yaml, permitted_classes: [], permitted_symbols: [], aliases: false, filename: nil, fallback: nil, symbolize_names: false, freeze: false)

yaml 中安全地加载 yaml 字符串。默认情况下,只允许反序列化以下类:

默认情况下不允许递归数据结构。可以通过将这些类添加到permitted_classes 关键字参数来允许任意类。它们是添加剂。例如,要允许 Date 反序列化:

Psych.safe_load(yaml, permitted_classes: [Date])

现在除了上面列出的类之外,还可以加载 Date 类。

通过更改aliases 关键字参数可以显式允许别名。例如:

x = []
x << x
yaml = Psych.dump x
Psych.safe_load yaml               # => raises an exception
Psych.safe_load yaml, aliases: true # => loads the aliases

如果 yaml 包含不在 permitted_classes 列表中的类,则会引发 Psych::DisallowedClass 异常。

如果 yaml 包含别名但 aliases 关键字参数设置为 false,则会引发 Psych::BadAlias 异常。

如果在解析时引发任何异常,将在异常消息中使用 filename

当可选的 symbolize_names 关键字参数设置为真值时,返回 Hash 对象中键的符号(默认值:字符串)。

Psych.safe_load("---\n foo: bar")                         # => {"foo"=>"bar"}
Psych.safe_load("---\n foo: bar", symbolize_names: true)  # => {:foo=>"bar"}

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Psych.safe_load。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。