JS-YAML -YAML 1.2 JavaScript解析器/編寫器


下載 JS-YAML -YAML 1.2 JavaScript解析器/編寫器
JS-YAML -YAML 1.2 JavaScript解析器/編寫器 在線演示 這是YAML的實現,YAML是一種對人友好的數據 串行化的語言。它一開始是作為PyYAML端口的 完全重寫從零開始。現在它非常快,並且支持1.2規范。 安裝 js的YAML模塊

npm install js-yaml

CLI可執行 如果你想從CLI檢查你的YAML文件,全局安裝js-yaml:

npm install -g js-yaml

使用

usage: js-yaml [-h] [-v] [-c] [-t] file

Positional arguments:
  file           File with YAML document(s)

Optional arguments:
  -h, --help     Show this help message and exit.
  -v, --version  Show program's version number and exit.
  -c, --compact  Display errors in compact mode
  -t, --trace    Show stack trace on error

為瀏覽器綁定的YAML庫 & lt; !——esprima只需要!!js /函數——比; & lt;腳本src = " esprima.js "祝辭& lt; / script> & lt;腳本src = " js-yaml.min.js "祝辭& lt; / script> & lt;腳本type = " text / javascript祝辭 var doc = jsyaml。負載(“問候:你好\ nname:世界”); & lt; / script> 瀏覽器支持主要用於在線演示。如果你發現任何錯誤-感覺 免費發送拉請求與修復。還要注意的是,IE和其他老瀏覽器 運行需要es5墊片。 注: 我們沒有資源來支持browserified版本。別指望會是這樣 很好的測試。如果出現問題,不要指望快速修復。 ! !默認情況下,js/函數在瀏覽器捆綁包中不起作用。如果你真的需要 首先加載esprima解析器(通過amd或直接)。 ! !bin在瀏覽器中會返回數組,因為瀏覽器不支持 js緩沖區和增加緩沖區墊片是完全沒用的實踐。 API 這里我們介紹了最有用的方法。如果你需要高級細節(創建 您自己的標記),請參閱wiki和 更多的例子 信息。 const yaml = require('js-yaml'); const fs = require('fs'); //獲取文檔,或在錯誤時拋出異常 嘗試{ const doc = yaml.safeLoad(fs.readFileSync('/home/ixti/example)yml, use utf8)); console.log (doc); } catch (e) { console.log (e); } safeLoad (string [, options]) 推薦的加載方式。將字符串解析為單個YAML文檔。返回一個 普通對象、字符串、數字、null或未定義,或在出錯時拋出YAMLException異常。默認情況下, 不支持regexps、函數和未定義。這種方法對於不可信的數據是安全的。 選項: 文件名(默認:null) -用作文件路徑的字符串 錯誤/警告消息。 onWarning(默認值:null) -在警告消息上調用的函數。 對於每個警告,加載器將使用一個YAMLException實例來調用此函數。 schema (default: DEFAULT_SAFE_SCHEMA)——指定要使用的架構。 FAILSAFE_SCHEMA -僅字符串、數組和純對象: http://www.yaml.org/spec/1.2/spec.html#id2802346 JSON_SCHEMA—所有json支持的類型: http://www.yaml.org/spec/1.2/spec.html#id2803231 CORE_SCHEMA—與JSON_SCHEMA相同: http://www.yaml.org/spec/1.2/spec.html#id2804923 DEFAULT_SAFE_SCHEMA—所有支持的YAML類型,沒有不安全的類型 (! !js /未定義,! !js / regexp和! ! js /函數): http://yaml.org/type/ DEFAULT_FULL_SCHEMA—所有支持的YAML類型。 json(默認:false)—與json的兼容性。解析行為。如果為真,則映射中的重復鍵將覆蓋值,而不是拋出錯誤。 注意:這個函數不理解多文檔源,它拋出 在這些例外。 注意:JS-YAML不支持特定於模式的標記解析限制。 因此,在YAML規范中並沒有嚴格定義JSON模式。 它允許數字在任何符號,使用Null和Null作為Null,等等。 核心模式也沒有這樣的限制。它允許用二進制表示整數。 加載(字符串[,選項]) 小心使用不可信的來源。與safeLoad()相同,但使用 DEFAULT_FULL_SCHEMA默認-添加一些javascript特定類型: ! !js /函數,! !js / regexp和! ! js /未定義。對於不可信的消息來源,您 必須另外驗證對象結構以避免注入: const untrusted_code = '"toString": !<”功能(){very_evil_thing();}”'; //我只是在轉換字符串,有什么問題嗎? 需要(“js-yaml”).load (untrusted_code) +” safeLoadAll(字符串[,迭代器][,選項]) 與safeLoad()相同,但是可以理解多文檔源。適用於 如果指定的話,迭代器將返回每個文檔,或返回文檔數組。 const yaml = require('js-yaml'); yaml。safeLoadAll(data, function (doc)) { console.log (doc); }); loadAll(字符串[,迭代器][,選項]) 與safeLoadAll()相同,但默認使用DEFAULT_FULL_SCHEMA。 safeDump(對象[,選項]) 將對象序列化為YAML文檔。使用DEFAULT_SAFE_SCHEMA,所以它會使用 如果試圖轉儲regexp或函數,則拋出異常。然而,您可以 通過將skipInvalid選項設置為true來禁用異常。 選項: 縮進(默認為2)-縮進使用的寬度(空格)。 noArrayIndent(默認:false) -當為真時,將不會給數組元素添加縮進級別 skipInvalid(默認:false)——不要拋出無效類型(如函數) ),並跳過具有此類類型的對和單值。 流級別(默認值:-1)——指定何時進行切換時的嵌套級別 集合的塊到流樣式。-1表示到處都是block style style - "tag" =>“住在豬圈里勒”地圖。每個標簽可能有自己的一組樣式。 schema (default: DEFAULT_SAFE_SCHEMA)指定要使用的模式。 sortKeys(默認為false)——如果為真,則在轉儲YAML時對鍵進行排序。如果一個 函數,使用函數對鍵進行排序。 線寬(默認值:80)-設置最大線寬。 noRefs(默認為false)——如果為真,不要將重復的對象轉換為引用 noCompatMode(默認:false) -如果為真,不要嘗試與舊版本兼容 yaml的版本。目前:不要引用“是”、“否”等,這是YAML 1.1所要求的 如果是真流序列將被壓縮,省略a、b之間的空格。'[a,b]',省略了key: value之間的空格,並引用了key。如。'{"a":b}'在對漂亮的URL查詢params使用yaml時很有用,因為空格是%-編碼的。 下表顯示了可選的樣式。“規范”, “二進制”…)可用於每個標簽(例如。! !空,! !int……)。Yaml 輸出顯示在右側=>(默認設置)或->

!!null
  "canonical"   -> "~"
  "lowercase"   => "null"
  "uppercase"   -> "NULL"
  "camelcase"   -> "Null"

!!int
  "binary"      -> "0b1", "0b101010", "0b1110001111010"
  "octal"       -> "01", "052", "016172"
  "decimal"     => "1", "42", "7290"
  "hexadecimal" -> "0x1", "0x2A", "0x1C7A"

!!bool
  "lowercase"   => "true", "false"
  "uppercase"   -> "TRUE", "FALSE"
  "camelcase"   -> "True", "False"

!!float
  "lowercase"   => ".nan", '.inf'
  "uppercase"   -> ".NAN", '.INF'
  "camelcase"   -> ".NaN", '.Inf'

例子: safeDump(對象,{ “風格”:{ ”! !null': 'canonical' //轉儲null為~ }, 'sortKeys': true //對對象鍵進行排序 }); 轉儲(對象[,選項]) 與safeDump()相同,但沒有限制(默認使用DEFAULT_FULL_SCHEMA)。 支持YAML類型 標准YAML標記和相應的JavaScipt類型的列表。另請參閱 YAML標記討論和 YAML庫類型。

!!null ''                   # null
!!bool 'yes'                # bool
!!int '3...'                # number
!!float '3.14...'           # number
!!binary '...base64...'     # buffer
!!timestamp 'YYYY-...'      # date
!!omap [ ... ]              # array of key-value pairs
!!pairs [ ... ]             # array or array pairs
!!set { ... }               # array of objects with given keys and null values
!!str '...'                 # string
!!seq [ ... ]               # array
!!map { ... }               # object

JavaScript-specific標簽

!!js/regexp /pattern/gim            # RegExp
!!js/undefined ''                   # Undefined
!!js/function 'function () {...}'   # Function

警告 注意,在JS-YAML中使用數組或對象作為鍵。JS不允許對象 方法將數組字符串化(通過調用toString()方法) 現在開始添加它們。 --- 嗎?[foo, bar] : -巴茲 嗎?{foo: bar} : -巴茲 - - - - - -巴茲 {“foo, bar”:“記者”,“(對象對象)”:[“記者”,“記者”]} 此外,還不支持讀取隱式塊映射鍵上的屬性。 因此,無法加載以下YAML文檔。 和錨foo: foo:酒吧 *錨:復制鑰匙 記者:蝙蝠 *錨:復制鑰匙 js-yaml為企業 可用的一部分Tidelift訂閱 js-yaml和數千個其他包的維護者正在與Tidelift合作,為用於構建應用程序的開放源碼依賴項提供商業支持和維護。節省時間、降低風險並改善代碼的運行狀況,同時向您所使用的依賴項的維護者支付費用。學習更多的知識。本文轉載於:http://www.diyabc.com/frontweb/news33292.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM