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


Ruby Psych.unsafe_load用法及代碼示例

本文簡要介紹ruby語言中 Psych.unsafe_load 的用法。

用法

unsafe_load(yaml, filename: nil, fallback: false, symbolize_names: false, freeze: false)
也別名為:load

yaml 加載到 Ruby 數據結構中。如果提供了多個文檔,則返回第一個文檔中包含的對象。如果在解析時引發任何異常,將在異常消息中使用 filename。如果 yaml 為空,則返回指定的 fallback 返回值,默認為 false

當檢測到 YAML 語法錯誤時引發 Psych::SyntaxError

例子:

Psych.unsafe_load("--- a")             # => 'a'
Psych.unsafe_load("---\n - a\n - b")   # => ['a', 'b']

begin
  Psych.unsafe_load("--- `", filename: "file.txt")
rescue Psych::SyntaxError => ex
  ex.file    # => 'file.txt'
  ex.message # => "(file.txt): found character that cannot start any token"
end

當可選的 symbolize_names 關鍵字參數設置為真值時,返回 Hash 對象中鍵的符號(默認值:字符串)。

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

當 'yaml' 參數為 NilClass 時引發 TypeError

注意:此方法*不應*用於解析不受信任的文檔,例如通過用戶輸入提供的 YAML 文檔。相反,請使用加載方法或 safe_load 方法。

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Psych.unsafe_load。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。