当前位置: 首页 > news >正文

YAML基础语法

正如YAML所表示的YAML Ain’t Markup Language,YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。

一边学习规则一边可以在在线Demo这个YAML转化JSON网页中进行上手练习

基本规则

YAML有以下基本规则: 
1、大小写敏感 
2、使用缩进表示层级关系 
3、禁止使用tab缩进,只能使用空格键 
4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。 
5、使用#表示注释 
6、字符串可以不用引号标注

三种数据结构

1、map,散列表 
使用冒号(:)表示键值对,同一缩进的所有键值对属于一个map,示例:
# YAML表示
age : 12
name : huang

# 对应的Json表示
{'age':12,'name':'huang'}

也可以将一个map写在一行:

# YAML表示
{age:12,name:huang}

# 对应的Json表示
{'age':12,'name':'huang'}
2、list,数组 
使用连字符(-)表示:
# YAML表示
- a
- b
- 12

# 对应Json表示
['a','b',12]


也可以写在一行:

# YAML表示
[a,b,c]

# 对应Json表示
[ 'a', 'b', 'c' ]
3、scalar,纯量 
数据最小的单位,不可以再分割。
数据结构嵌套
map和list的元素可以是另一个map或者list或者是纯量。由此出现4种常见的数据嵌套:
1、map嵌套map

# YAML表示
websites:
 YAML: yaml.org 
 Ruby: ruby-lang.org 
 Python: python.org 
 Perl: use.perl.org 

# 对应Json表示
{ websites: 
   { YAML: 'yaml.org',
     Ruby: 'ruby-lang.org',
     Python: 'python.org',
     Perl: 'use.perl.org' } }


2、map嵌套list

# YAML表示
languages:
 - Ruby
 - Perl
 - Python 
 - c

# 对应Json表示
{ languages: [ 'Ruby', 'Perl', 'Python', 'c' ] }


3、list嵌套list

# YAML表示
-
  - Ruby
  - Perl
  - Python 
- 
  - c
  - c++
  - java

# 对应Json表示
[ [ 'Ruby', 'Perl', 'Python' ], [ 'c', 'c++', 'java' ] ]


除此以外,还可以如下表示该结构

# 方法2
- - Ruby
  - Perl
  - Python 
- - c
  - c++
  - java

# 方法3
- [Ruby,Perl,Python]
- [c,c++,java]


4、list嵌套map

# YAML表示
-
  id: 1
  name: huang
-
  id: 2
  name: liao

# 对应Json表示
[ { id: 1, name: 'huang' }, { id: 2, name: 'liao' } ]

 

转载于:https://www.cnblogs.com/cnsdhzzl/p/9336106.html

相关文章:

  • Spring深入理解(一)
  • MongoDB备份与恢复
  • Linux 用户 用户组 相关命令
  • Unity获取Android平台音量
  • 人工智能技术在中小学课堂中的应用
  • 设计模式入门:工厂方法模式
  • 作为app运营,你需要get的技能有哪些? 总结七项APP运营技能
  • Java分布式锁之数据库实现
  • Netty(二):数据在ChannelPipeline中的流经
  • 771. Jewels and Stones - LeetCode
  • 主磁盘分区和逻辑磁盘分区的区别是什么?
  • Android tab页制作
  • 纯前端表格技术应用研讨会——华为供应链专场
  • PHP运算优先级导致的and绕过
  • oracle查看某表字段类型
  • [deviceone开发]-do_Webview的基本示例
  • Angular Elements 及其运作原理
  • Asm.js的简单介绍
  • KMP算法及优化
  • rc-form之最单纯情况
  • Spring Cloud中负载均衡器概览
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 基于组件的设计工作流与界面抽象
  • 来,膜拜下android roadmap,强大的执行力
  • 每天一个设计模式之命令模式
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前嗅ForeSpider教程:创建模板
  • 写代码的正确姿势
  • 学习ES6 变量的解构赋值
  • 一天一个设计模式之JS实现——适配器模式
  • 赢得Docker挑战最佳实践
  • 用Python写一份独特的元宵节祝福
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 怎样选择前端框架
  • Java数据解析之JSON
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (C语言)逆序输出字符串
  • (day 12)JavaScript学习笔记(数组3)
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .net core使用ef 6
  • .NET Standard 的管理策略
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • @31省区市高考时间表来了,祝考试成功
  • [C# 基础知识系列]专题十六:Linq介绍
  • [C#]winform部署yolov9的onnx模型
  • [CISCN2019 华东北赛区]Web2
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择
  • [DAX] MAX函数 | MAXX函数
  • [dts]Device Tree机制