當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。