ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

yaml文件格式规范

2022-03-08 09:34:18  阅读:423  来源: 互联网

标签:表示 YAML 规范 空格 yaml JSON 文件格式 使用 键值


1、yaml简述

YAML是一个类似 XML、JSON 的标记性语言。YAML 强调以数据为中心,并不是以标识语言为重点。因而YAML 本身的定义比较简单,号称“一种人性化的数据格式语言”。

2、适用场景

2.1 脚本语言

由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript,Go 。除了Java 和 Go,其他都是脚本语言。

2.2序列化

YAML比较适合做序列化。因为它是宿主语言数据类型直转的。

2.3 配置文件

YAML做配置文件也不错。写YAML要比写XML快得多(无需关注标签或引号),并且比ini文档功能更强。

3、数据结构

YAML 认为数据由以下三种结构组成: 标量,序列,键值表。

标量:单个的、不可再分的值,如:数字,字符串

数组:一组按次序排列的值,如:python中的列表

键值表:键值对的集合,如:python中的字典

5、语法约定

  • 大小写敏感
  • '#'表示注释
  • 使用 Unicode 编码作为字符标准编码
  • 字符串默认不需要引号,如果字符串包含空格或者特殊字符(例如冒号),需要加引号
  • 使用缩进表示层级关系,缩进不允许使用tab,只允许空格,缩进的空格数不重要,只要相同层级的元素左对齐即可

6、格式规范

6.1 标量

integer: 12345                      # 整数标准形式

octal: 0o34                         # 八进制表示,以0o开头

hex: 0xFF                         # 十六进制表示,以0x开头

float: 1.23e+3                      # 浮点数

fixed: 13.67                        # 固定小数

minmin: -.inf                       # 表示负无穷

notNumber: .NaN                   # 无效数字

null:                              # 空值

boolean: [true, false]                 # 布尔值

string: '12345'                      # 字符串

date: 2015-08-23                    # 日期

datetime: 2015-08-23T02:02:00.1z      # 日期时间

iso8601: 2015-08-23t21:59:43.10-05:00  # iso8601 日期格式

6.2 数组

  • 使用“-”(横线)+单个空格表示单个列表项
  • 使用"[]"表示一组数据,一组数据用”,”隔开,”[“,”]”,逗号前后有无空格都可以
  • 组合表示。每个结构都可以嵌套组成复杂的表示结构。

 

6.3 键值表

  • 使用 “:”(冒号) + 空格表示单个键值对
  • 使用"{}"表示一个键值表,一组数据用”,”隔开,”[“,”]”,逗号前后有无空格都可以
  • 组合表示。每个结构都可以嵌套组成复杂的表示结构。

6.4 文本块

  • 使用定界符“”(双引号)、‘’(单引号)和回车表示的块:最终表示成一行,双引号不支持转义。
  • 使用 “|” 和文本内容缩进表示的块:保留块中已有的回车换行。
  • 使用 “>” 和文本内容缩进表示的块:将块中回车替换为空格,最终连接成一行。

6.5 “!”

  • 显式指示类型,或自定义类型标识。
  • 单叹号通常是自定义类型,双叹号是内置类型

!!int               # 整数类型

!!float             # 浮点类型

!!bool              # 布尔类型

!!str               # 字符串类型

!!binary            # 也是字符串类型

!!timestamp         # 日期时间类型

!!null              # 空值

!!set               # 集合

!!omap, !!pairs     # 键值列表或对象列表

!!seq               # 序列,也是列表

!!map               # 键值表

6.6 锚点与引用

  • 使用 “&” 定义数据锚点(即要复制的数据)
  • 使用 “*” 引用上述锚点数据(即数据的复制目的地)

7、YAML 组织结构

  YAML 文件可以由一或多个文档组成(也即相对独立的组织结构组成),文档间使用“---”(三个横线)在每文档开始作为分隔符。同时,文档也可以使用“...”(三个点号)作为结束符(可选)。

  • 如果只是单个文档,分隔符“---”可省略。
  • 每个文档并不需要使用结束符“...”来表示结束,但是对于网络传输或者流来说,作为明确结束的符号,有利于软件处理。

8、拓展

  • YAML 与 XML

具有 XML 同样的优点,但比 XML 更加简单、敏捷等

  • YAML 与 JSON
  • JSON 可以看作是 YAML 的子集,也就是说 JSON 能够做的事情
  • YAML 也能够做,YAML 能表示得比 JSON 更加简单和阅读,例如“字符串不需要引号”。所以 YAML 容易可以写成 JSON 的格式,但并不建议这种做
  • YAML 能够描述比 JSON 更加复杂的结构,例如“关系锚点”可以表示数据引用(如重复数据的引用)。

标签:表示,YAML,规范,空格,yaml,JSON,文件格式,使用,键值
来源: https://www.cnblogs.com/tech-share001/p/15979095.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有