本文使用 nodejs 的 yamljs 库对 yaml 文件进行解析。

安装

直接使用 npm i yamljs 即可安装。

测试

yaml 配置文件

# yaml测试样例
# null 或 NULL 为关键字,不能写# 名称
# 字符串
name: conf file# 版本
# 如按浮点,2.0会转换成2
# 如按字符串,保留原样
version: 2.0# 布尔类,转换为1或0
need: true# 时间
time: 2020-10-03T09:21:13empty: nul# 对象
# 加双引号会转义\n,即会换行
my:name: late \n leename1: "late \n lee"age: 99# 块
text: |helloworld!# 数组
fruit:- apple- apple1- apple2- apple3- apple4- apple5# 多级数组
multi:sta:- 110 210 ddd 99- 133 135 1 2 1588 1509- 310-410- 333-444

该示例基本涵盖了大部分的 yaml 格式。包括:字符串,数值、数组、多级map。

测试代码

测试代码如下:

/*
npm i yamljs
执行:nodejs test.js
*/YAML = require('yamljs');function main()
{// 固定配置文件名 TODO:容错处理nativeObject = YAML.load('config.yaml');jsonstr = JSON.stringify(nativeObject);theJson = JSON.parse(jsonstr, null);console.log("alljson: ", theJson);console.log("name: ", theJson.name);console.log("version: ", theJson.version);console.log("empty: ", theJson.empty); // nodejs 可处理null值console.log("time: ", theJson.time);console.log("name: ", theJson.my.name);console.log("name1: ", theJson.my.name1);console.log("age: ", theJson.my.age);console.log("text: ", theJson.text);theText = "";// 数组,遍历theJson.multi.sta.forEach(function(v, _, _){theText += v + '\n';});console.log("sta ", theText);// 是否需要显示提交日志if (theJson.need == true){console.log("need...");}
}// call main
main();

输出结果如下:

$ node test.js
alljson:  { name: 'conf file',version: 2,need: true,time: '2020-10-03T09:21:13.000Z',empty: 'nul',my: { name: 'late \\n lee', name1: 'late \n lee', age: 99 },text: 'hello\nworld!\n',fruit:[ 'apple', 'apple1', 'apple2', 'apple3', 'apple4', 'apple5' ],multi:{ sta:[ '110 210 ddd 99','133 135 1 2 1588 1509','310-410','333-444' ] } }
name:  conf file
version:  2
empty:  nul
time:  2020-10-03T09:21:13.000Z
name:  late \n lee
name1:  latelee
age:  99
text:  hello
world!bad:  undefined
sta  110 210 ddd 99
133 135 1 2 1588 1509
310-410
333-444need...

结果说明

1、可以看到,解析后的 theJson 变量,就是整个配置文件的 json,可以直接使用其中的字段。
2、使用 yamljs 解析时,参数的值可以为 null 或 NULL。这点与 yaml-cpp 库不一样。
3、如果字段不存在时,得到的结果为 undefined,并不会出现段错误。这点与 yaml-cpp 库也不一样。

yaml文件解析:nodejs篇相关推荐

  1. yaml文件解析:golang篇

    本文使用 golang 库 viper 对 yaml 文件进行解析. 下载 执行 go get github.com/spf13/viper 安装. golang 中 yaml 文件解析较多.本文选用 ...

  2. SDU信息门户(12)系统配置的yaml文件解析

    2021SC@SDUSC 目录 一.引言 二.docker安装及yaml文件分析 1.安装 2.yaml文件分析 version build cap_add,cap_drop cgroup_paren ...

  3. yaml文件解析:c++篇

    本文使用 C++ 库 yaml-cpp 对 yaml 文件进行解析. 下载编译 下载地址:https://github.com/jbeder/yaml-cpp/releases/tag/yaml-cp ...

  4. YAML文件解析大全

    我们学习Java,都是先介绍properties文件,使用properties文件配合Properties对象能够很方便的适用于应用配置上.然后在引入XML的时候,我们介绍properties格式在表 ...

  5. 文件操作安全之-文件解析原理篇

    本节将详细的解释一下文件解析相关内容,作为我的专栏<WEB安全原理和多种防御方法解读>中的一节. 本文所涉及的文件解析主要指的是WEB领域的文件解析.当访问一个网站或者某个网站特定的页面, ...

  6. go解析yaml文件示例

    yaml文件已经成为配置的一种主要格式,因此各种语言都提供了相应的解析类库, 本文就以go语言中常用的yaml解析库 gopkg.in/yaml为例,简单展示一下如何解析yaml文件 具体代码在这里: ...

  7. dump文件_一种比Xml更敏捷的配置方式,Python Yaml 配置文件解析模块详解

    为什么选择Yaml Yaml的可读性好.扩展性好. Yaml和脚本语言的交互性好. Yaml使用实现语言的数据类型. Yaml有一个一致的信息模型. Yaml易于实现. Yaml试图用一种比Xml更敏 ...

  8. 如何在Python中解析YAML文件

    如何在Python中解析YAML文件? #1楼 不依赖C标头的最简单,最纯净的方法是PyYaml( 文档 ): #!/usr/bin/env pythonimport yamlwith open(&q ...

  9. 深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件

    文章目录: 1 yaml说明介绍 1.1 yaml介绍 1.2 YAML 相关网址 2 YAML的python包PyYAML的使用 2.1 关于PyYAML的相关网址 2.2 安装PyYAML 2.3 ...

最新文章

  1. querySelector
  2. 部分网站为什么上不去_企业网站如何霸占搜索引擎首页
  3. Spring源码分析-深入理解生命周期之BeanFactoryProcessor
  4. clamav程序的研究总结
  5. 谈论Java原子变量和同步的效率 -- 颠覆你的生活
  6. RFC:Request For Comments
  7. linux上用selenium登录新浪微博,获取用户关注的用户id
  8. 如何从github下载并运行angular项目
  9. 2.UML2 软件建模入门与提高 --- UML入门基础
  10. protoc安装使用
  11. 产品经理们终极面试宝典
  12. 如何下载遥感软件ERDAS
  13. matlab solve和subs,【MATLAB】matlab中的subs()函数和solve()函数用法
  14. 今日头条视频Url嗅探
  15. 软件测试报告编写指南
  16. 寻找AR中的Big Difference - v3.0 | AR指南
  17. jQuery绚丽霓虹灯文字特效
  18. 手机号码段及归属地查询规则
  19. 关系网络数据可视化:1. 关系网络图Gephi
  20. python调试 设置断点

热门文章

  1. 开源之旅之开源企业软件采购指南
  2. 大众正式发布ID. Buzz 造型致敬经典
  3. 支付宝集五福1月19日开启 超1000个商家机构齐发福卡
  4. 不分享“年度报告”的人,多少有点难言之隐
  5. 美团饿了么:严禁诱导强迫骑手注册个体工商户
  6. 腾讯公司被法院强制执行25元,刚好是QQ超级会员的价格
  7. 1.1万亿!华为第一!
  8. 华为P50系列即将发布:麒麟9000E/9000处理器有戏?
  9. 小米折叠屏手机设计专利曝光:向内折叠 正面无开孔
  10. iPhone 12蓝色版疑似翻车:眼前的蓝不是蓝......