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

posted @ 2020-08-16 20:41  DiyAbc-Eleven  阅读(1714)  评论(0编辑  收藏  举报