yaml 语法和在线解析工具

news2024/11/13 10:55:51

文章目录

  • 在线解析工具
  • 1. 简介
  • 2. 语法规则
  • 3. 数据类型
    • 3.1 数组:
    • 3.2对象:
    • 3.3 标量
    • 3.4 复合结构
    • 3.5 锚点
      • 3.5.1 单个锚点
      • 3.5.6 多个锚点
    • 3.6 引号
  • 参考

在线解析工具

工具1
工具2

1. 简介

Yaml是一种可读性高的数据标记语言,Yaml文件是一种配置文件,一般主要用于存储全局配置信息等,可存放不同类型的数据,如列表,字典等。

2. 语法规则

  • 文件后缀.yml
  • 大小写敏感
  • 空格缩进区分层级
  • 且空格数量不要求,对齐即可,但是建议2或4个,便于维护。缩进只能使用空格不能使用TAB
  • : 后面要有个空格,否则会把整体当个字符串
    如 下图,只有 students3才顺利解析, students1和 students2 都由于空格问题,导致解析错误
    在这里插入图片描述- #表示注释
    备注:详细用法见数据类型小节例子

3. 数据类型

  • 数组:序列/列表,按次序排序的值
  • 对象:映射/字典/哈希,键值对
  • 标量:单个值,不可再分,如字符串,布尔值,Null等

备注:

  • 冒号和‘-’后的值前面需空一个空格
  • 字符串不使用引号
  • 单引号转义特殊字符、空格等

数组

序列/列表,按次序排序的值

3.1 数组:

如列表numbers:[1,2,3,4,5]

# - 列表值,使用“-”表示列表中的元素
# 表示方式1:
numbers:
  - 1
  - 2
  - 3
  - 4
  - 5

#表示方式2:
numbers: [1,2,3,4,5]

对象

映射/字典/哈希,键值对

3.2对象:

如字典:ab:{“a”:1,“b”:“哈哈”}

# 表示方式1
ab: 
  a: 1
  b: 哈哈   # 字符串哈哈可不使用引号

# 表示方式2:
ab: {"a":1,"b":"哈哈"}

注意字典 key:value形式时,key必须带引号
students: {“a”:1,“b”:2,c:3} 会被识别为:

students:
  a: 1
  b: 2
  'c:3:3': null

3.3 标量

单个值,不可再分,如字符串,布尔值,Null,日期等

# 标量
# 字符串
name:susy

# 布尔值
isFlag: True

# Null:使用~表示
a: ~

# 日期:YYYY-MM-DD格式, 
d: 2023-03-06

# 时间:YYYY-MM-DDThh:mm:ss+时区
t: 2018-02-17T15:02:31+08:00

# 特殊字符、空格 使用单引号转义
email: '123@qq.com'
talk: 'Hello World'
  • 日期必须使用ISO 8601格式,即yyyy-MM-dd
  • 可以使用双引号或者单引号包裹特殊字符或带空格的字符串

3.4 复合结构

包含数组,对象,标量等结构

复合结构:
{“code”:200,students:[{name:“张三”,age:12,hobby:[“打篮球”,“跑步”]},{name:“李四”,age:17,hobby:[“打羽毛球”,“看书”]}]}

# hobby也可以使用行内写法:
# hobby:[打篮球,跑步]
code: 200
students:
    -
      name: 张三
      age: 12
      hobby:
          - 打篮球
          - 跑步
    -
      name: 李四
      age: 17
      hobby:
          - 打羽毛球
          - 看书

引用
引用已有键的值,可使用&锚点和*别名来引用,可通俗理解为复制粘贴,可复用yaml文件中已有键值对。

3.5 锚点

3.5.1 单个锚点

引用重复的内容在YAML中可以使用&来完成锚点定义,使用*来完成锚点引用

当锚点是 标量类型是,不管是位于上层,还是某个属性,都可以用于下面的语法:

#方式一 位于属性中:在hr中,使用&SS为Sammy Sosa设置了一个锚点(引用)名称为SS,在rbi中使用*SS完成了锚点使用
hr:
- Mark McGwire
- &SS Sammy Sosa
rbi:
- *SS 
- Ken Griffey

#执行结果
{rbi=[Sammy Sosa, Ken Griffey], hr=[Mark McGwire, Sammy Sosa]}


#方式2 位于上层:注意不能独立的定义锚点,比如不能直接这样写: &SS Sammy Sosa;
SS: &SS Sammy Sosa
hr:
 - Mark McGwire
 - *SS
rbi:
 - *SS 
 - Ken Griffey

当 锚点引用的是对象类型时,需要结合<<: 来一起使用

# 使用&别名建立锚点,将students全部内容设别名为“stu”
students: &stu
  name: zhangsan
  age: 12students: &stu  {  "name“: zhangsan  ,  ”age“: 12 }

再来看看此时的锚点语法:

# 引用键
# 引用students的内容,使用<< *别名即可,<< 表示合并当前数据
class1:
  <<: *stu
  sex: man


  
以上内容被读取后输出为:

# 键值
students: 
  name: zhangsan
  age: 12

# 引用键
class1:
  name: zhangsan
  age: 12
  sex: man

本质上是合并的结果

3.5.6 多个锚点

看个复杂例子,会涉及到多个锚点的情况:

#在merge中,定义了四个锚点,分别在sample中使用。
merge:
  - &CENTER { x: 1, y: 2 }
  - &LEFT { x: 0, y: 2 }
  - &BIG { r: 10 }
  - &SMALL { r: 1 }

#sample1中,<<: *CENTER意思是引用{x: 1,y: 2},并且合并到sample1中,那么合并的结果为:sample1={r=10, y=2, x=1}
sample1: 
    <<: *CENTER
    r: 10

#sample2中,<<: [*CENTER, *BIG] 意思是联合引用{x: 1,y: 2}和{r: 10},并且合并到sample2中,那么合并的结果为:sample2={other=haha, x=1, y=2, r=10}
sample2:
    << : [ *CENTER, *BIG ]
    other: haha
 
#sample3中,引入了*CENTER, *BIG,还使用了r: 100覆盖了引入的r: 10,所以sample3值为:sample3={r=100, y=2, x=1}
sample3:
    << : [ *CENTER, *BIG ]
    r: 100

主要是要你知道 :

  • 多个锚点 ,需要使用 [] ,大括号本身不是啥特殊含义的东西,仅仅表示多个对象被merger而已。如果看成普通数组,就难以理解了。
  • 自身属性优先级高,merge过来的同名属性优先级低

3.6 引号

引号可以对于特殊字符,是决定可视或不可视:

str1: "Hello World"
str2: "Hello\nWorld"

str3: 'Hello World'
str4: 'Hello\nWorld'

输出结果:

str1: Hello World
str2: |-         #表示程序解析该段 yaml时,看到的是2行字符串
  Hello
  World
str3: Hello World
str4: Hello\nWorld

参考

yaml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1537364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6 修改主机名和HOSTS文件

后期我们会配置多台服务器&#xff0c;那么每台服务器我们都会给定一个主机名&#xff0c;方便后期通过主机名进行访问。主机名的修改我们可以在安装操作系统时对其修改&#xff0c;如果忘记了&#xff0c;就可以修改配置文件完成&#xff0c;像后期我们进行虚拟机克隆后&#…

Docker常用命令练习

文章目录 Docker常用命令练习1.docker 基础命令2.镜像命令3.保存镜像4.加载镜像5.容器命令6.环境变量7. --rm8. --networkhost Docker常用命令练习 1.docker 基础命令 安装docker yum install docker启动docker systemctl start docker关闭docker systemctl stop docker重…

LeetCode-热题100:17.电话号码的字母组合

题目描述 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a; digits “23” 输出&a…

2024年【P气瓶充装】复审模拟考试及P气瓶充装操作证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 P气瓶充装复审模拟考试根据新P气瓶充装考试大纲要求&#xff0c;安全生产模拟考试一点通将P气瓶充装模拟考试试题进行汇编&#xff0c;组成一套P气瓶充装全真模拟考试试题&#xff0c;学员可通过P气瓶充装操作证考试全…

【阿里云物联网】上报设备数据

前言 MQTT客户端上传数据到阿里云服务端&#xff0c;并且能将数据显示出来。在此之前&#xff0c;我们先要懂得阿里云给设备管理划分的概念。首先是产品&#xff0c;所以在产品里要配置内容&#xff0c;产品下的设备才可以使用&#xff0c;比如主题大类都是在产品里面就可以查…

使用 Amazon SageMaker 微调 Llama 2 模型

本篇文章主要介绍如何使用 Amazon SageMaker 进行 Llama 2 模型微调的示例。 这个示例主要包括: Llama 2 总体介绍Llama 2 微调介绍Llama 2 环境设置Llama 2 微调训练 前言 随着生成式 AI 的热度逐渐升高&#xff0c;国内外各种基座大语言竞相出炉&#xff0c;在其基础上衍生出…

I2C芯片24C02/4/8/16(EEPROM)解读

一.原理图 24C01的硬件连接图如下&#xff1a; 二.24C0x系列芯片规格 三.24C0x芯片结构 下面简述EEPROM内部存储结构。 3.1 内部存储结构 根据24C02芯片的Datasheet描述&#xff0c;其内部存储结构应该如下图所示。 其它容量的EEPROM内部结构依此类推。 3.2 地址 3.2.1 器件…

BitMap介绍与应用

文章目录 BitMapBitMap介绍BitMap 结构RoaringBitmap 常见BitMapJava中的BitSetRedis中的BitMapClickHouse中的BitMap BitMap应用案例人群圈选 BitMap 场景一&#xff1a;(大部分开发面试都会遇到的一个问题&#xff09; 有10亿个用户id (int类型)&#xff0c;判断用户是否登…

Vue el-table 合并单元格

一般常见的就是下图这种的单列&#xff0c;上下重复进行合并。 有时候可能也会需要多行多列的合并。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&qu…

【LeetCode】--- 动态规划 集训(一)

目录 一、1137. 第 N 个泰波那契数1.1 题目解析1.2 状态转移方程1.3 解题代码 二、面试题 08.01. 三步问题2.1 题目解析2.2 状态转移方程2.3 解题代码 三、746. 使用最小花费爬楼梯3.1 题目解析3.2 状态转移方程3.3 解题代码 一、1137. 第 N 个泰波那契数 题目地址&#xff1a…

FloodFill算法——岛屿数量

文章目录 题目解析算法解析代码解析 题目解析 岛屿数量 题目依旧是熟悉的配方&#xff0c;熟悉的味道&#xff0c;还是那个0还是那个1还是那个二维矩阵&#xff0c;这时候BFS和DFS闻着味就来了&#xff0c;我们来看一下这个题目&#xff0c;这个题目也很容易理解如下图有一个…

阿里云2核4G服务器租用价格和性能测评

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

市场复盘总结 20240322

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 36% 最常用…

力扣题库27题移除元素(c语言)

解法&#xff1a; int removeElement(int* nums, int numsSize, int val) {int src0,dst0;while(src<numsSize){if(nums[src]val){src;}else{nums[dst]nums[src];src;dst;}}return dst; }

SCI一区 | Matlab实现PSO-TCN-BiGRU-Attention粒子群算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现PSO-TCN-BiGRU-Attention粒子群算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现PSO-TCN-BiGRU-Attention粒子群算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述…

visual studio卸载几种方法

1、控制面板卸载&#xff1b; 2、有时候会发现控制面板卸载会失败&#xff0c;无法卸载&#xff0c;这时候要先把下面目录的关于visual studio的都删除&#xff0c;然后重启电脑后&#xff0c;重新安装vs即可。

C语言预编译#pragma宏的作用

在嵌入式编程中&#xff0c;#pragma 指令具有非常重要的作用&#xff0c;因为它允许开发者在不同的编译器之间传达特定的编译指令。由于嵌入式编程通常与硬件紧密相关&#xff0c;且资源有限&#xff0c;这些指令可以帮助开发者更有效地利用可用资源&#xff0c;优化程序&#…

基于python+vue的stone音乐播放器的设计与实现flask-django-php-nodejs

随着我国经济的高速发展与人们生活水平的日益提高&#xff0c;人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下&#xff0c;人们更趋向于足不出户解决生活上的问题&#xff0c;stone音乐播放器展现了其蓬勃生命力和广阔的前景。与此同时&#xff0c;为解决用…

docker快速安装达梦数据库

docker快速安装达梦数据库 文章目录 docker快速安装达梦数据库前言环境准备下载镜像运行、配置容器 前言 因为公司需要将自己的底代码平台与客户的需求做适配&#xff0c;客户要求必须满足信创要求&#xff0c;使用达梦数据库。所以需要将原有的MySQL数据库与达梦数据库适配&a…

每日五道java面试题之springboot篇(一)

目录&#xff1a; 第一题. 什么是 Spring Boot&#xff1f;第二题. Spring Boot 有哪些优点&#xff1f;第三题. Spring Boot 的核心注解是哪个&#xff1f;它主要由哪几个注解组成的&#xff1f;第四题. 什么是 JavaConfig&#xff1f;第五题. Spring Boot 自动配置原理是什么…