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