本文简要介绍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 Psych.safe_dump用法及代码示例
- Ruby Psych.parse用法及代码示例
- Ruby Psych.unsafe_load用法及代码示例
- Ruby Psych.dump用法及代码示例
- Ruby Psych.parse_stream用法及代码示例
- Ruby Psych.dump_stream用法及代码示例
- Ruby Psych.load_stream用法及代码示例
- Ruby Psych模块用法及代码示例
- Ruby PrettyPrint.current_group用法及代码示例
- Ruby Pathname.<=>用法及代码示例
- Ruby Pathname.children用法及代码示例
- Ruby Process.groups用法及代码示例
- Ruby Process.wait2用法及代码示例
- Ruby Process.getpgrp用法及代码示例
- Ruby Proc.eql?用法及代码示例
- Ruby PTY.open用法及代码示例
- Ruby PrettyPrint.genspace用法及代码示例
- Ruby PKey.sign_raw用法及代码示例
- Ruby Profiler模块用法及代码示例
- Ruby Process.setproctitle用法及代码示例
- Ruby PPMethods.comma_breakable用法及代码示例
- Ruby Process.setrlimit用法及代码示例
- Ruby Proc.prc ==用法及代码示例
- Ruby Profiler.raw_data用法及代码示例
- Ruby Process.uid用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Psych.safe_load。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
