一、YML语法

1.约定

  • k: v 表示键值对关系,冒号后面必须有一个空格

  • 使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的

  • 大小写敏感

  • 缩进时不允许使用Tab键,只允许使用空格。

  • 松散表示,java中对于驼峰命名法,可用原名或使用-代替驼峰,如java中的lastName属性,在yml中使用lastName或 last-name都可正确映射。

2.键值关系

  对于键与值主要是看能否表示以下内容。普通的值(数字、字符串、布尔)、日期、对象、数组、集合等。

1 字符串默认不用加上单引号或者双绰号;
2
3 "": 双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
4
5 name: "zhangsan \n lisi":输出;zhangsan \n lisi
6
7 '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据

  日期

date: 2019/01/01

  对象(属性和值)、Map(键值对)

在下一行来写对象的属性和值的关系,注意缩进
people:
name: zhangsan
age: 20 行内写法:
people: {name:zhangsan,age: 20}

  数组、list、set

    用 - 表示数组中的一个元素

pets:
- dog
- pig
- cat 行内写法:
pets: [dog,pig,cat]

  数组对象、list对象、set对象

peoples:
- name: zhangsan
age: 22
- name: lisi
age: 20
- {name: wangwu,age: 18}
 1 java代码示例
2 public class Person {
3
4 private String lastName;
5 private Integer age;
6 private Boolean boss;
7
8 //Spring @value数组示例
9 @Value("#{'${arrays}'.split(',')}")
10 private String[] arrays;
11
12 private Date birth;
13 private Map<String,Object> maps;
14 private List<Dog> lists;
15 private Dog dog;
16 private String[] arr;
17 }
18 public class Dog {
19 private String name;
20 private Integer age;
21 }
22
23
24 对应的yml
25 person:
26 boss: false
27 maps:
28 k1: v1
29 k2: 14
30 lists:
31 - name: d1
32 age: 2
33 - name: d2
34 age: 3
35 - {name: d3,age: 4}
36 birth: 2017/12/15
37 dog:
38 name: p_dog
39 age: 15
40 age: 13
41 last-name: 张三
42 arr: [s1,s2,s3]
43 arrays: 'a1,a2'

3.文档块

  对于测试环境,预生产环境,生产环境可以使用不同的配置,如果只想写到一个文件中,yml与是支持的,每个块用 ---- 隔开

 1 server:
2 port: 8081
3 spring:
4 profiles:
5 active: prod #激活对应的文档块
6
7 ---
8 server:
9 port: 8083
10 spring:
11 profiles: dev #指定属于哪个环境
12
13
14 ---
15
16 server:
17 port: 8084
18 spring:
19 profiles: prod #指定属于哪个环境

二、Yaml中特殊符号“| > |+ |-”的作用

  "|",保留每行尾部的换行符\n。
  ">",删除每行尾部的换行符\n,则看似多行文本,则在程序中会将其视为一行。

1 include_newlines: |
2 exactly as you see
3 will appear these three
4 lines of poetry
5
6 fold_newlines: >
7 this is really a
8 single line of text
9 despite appearances

  在">"符号应用的多行文本值中,所有换行符都会被视为空格,有两种方法都可以强制保留换行符:

1 fold_some_newlines: >
2 a
3 b # 在两行之间空一行
4
5 c
6 d
7 e # 在值前面再加一个空格
8 f
9 same_as: "a b\nc d\n e\nf\n"

  "|+",保留每行尾部的换行符\n的同时,保留内容结尾处的换行符\n。
  "|-",保留每行尾部的换行符\n的同时,删除内容结尾处的换行符\n。

1 s1: |
2 Foo
3
4 s2: |+
5 Foo
6
7 s3: |-
8 Foo


YML的更多相关文章

  1. elasticsearch按照配置时遇到的一些坑 [Failed to load settings from [elasticsearch.yml]]

    这里整理几个空格引起的问题. 版本是elasticsearch-2.3.0 或者elasticsearch-rtf-master Exception in thread "main" ...

  2. Drupal8开发教程:认识.info.yml文件

    YAML 文件是新引入的重要项目文件,在 Drupal 8 中,无论是模块.主题还是安装配置文件,都需要 .info.yml 文件来为其存储项目相关的基础信息. 在 Drupal 中,.info.ym ...

  3. yml文件数据的简洁表达方法(Hashes to OpenStruct)

    通过ruby编写测试脚本的时候,我还是喜欢采用yml来管理测试数据,就像以前的文章(Selenium WebDriver + Grid2 + RSpec之旅(五))提到的一样,但是在引用yml中的数据 ...

  4. docker-compose.yml 语法说明

    YAML 模板文件语法 默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建. 其 ...

  5. springboot 配置文件 .properties和.yml的写法区别

    例如 :    redis配置的properties或yml文件,如下: spring.redis.cluster.nodes[]= spring.redis.cluster.nodes[]= 或 s ...

  6. springboot工程读取配置文件application.yml的写法

    现在流行springboot框架的项目,里面的默认配置文件为application.yml,我们怎样读取这个配置文件呢? 先贴上我得配置文件吧 目录结构 里面内容 1 写读取配置文件的工具类 @Con ...

  7. Opencv探索之路(十九):读写xml和yml文件

    有时候我们处理完图像后需要保存一下数据到文件上,以供下一步的处理.一个比较广泛的需求场景就是:我们对一幅图像进行特征提取之后,需要把特征点信息保存到文件上,以供后面的机器学习分类操作.那么如果遇到这样 ...

  8. yml 文件操作方法

    文件读取方法示例: import yaml fr = open('yml_file_address', 'r',encoding='utf-8') data = yaml.load(fr) print ...

  9. SpringBoot application.yml logback.xml,多环境配置,支持 java -jar --spring.profiles.active

    趁今天有时间整理了一下 启动命令为 //开发环境 java -jar app.jar --spring.profiles.active=dev--server.port=8060 //测试环境 jav ...

  10. filebeat.yml(中文配置详解)

    ################### Filebeat Configuration Example ######################### ####################### ...

随机推荐

  1. Qt VideoMeeting_Intercom师生对讲开发中实际上遇到的一些问题,终于结项了,也照例写一下总结吧。

    layout: post title: Qt VideoMeeting_Intercom师生对讲开发中实际上遇到的一些问题,终于结项了,也照例写一下总结吧. description: 软件开发,初次开 ...

  2. QT+VS 调用基于Google Breakpad的跨平台Qt崩溃异常捕获调用方案

    方案一.基于Google Breakpad的跨平台Qt崩溃异常捕获调用方案 首先上博客:Windows下Qt生成dump文件并定位bug(基于qBreakpad) 这个地方使用的是一个叫qBreakP ...

  3. (数据科学学习手札147)Python GIS利器shapely全新2.0版本一览

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,我写过很多篇介绍geopand ...

  4. JavaScript 中如何拦截全局 Fetch API 的请求和响应?

    本文翻译自 Intercepting JavaScript Fetch API requests and responses 拦截器是可用于预处理或后处理 HTTP 请求的代码块,有助于全局错误处理. ...

  5. 牛客小白月赛65ABCD(E)

                          比赛链接:牛客小白月赛65_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com) A:牛牛去购物 题意 ...

  6. 题解P4474 王者之剑

    双倍经验 简要题意 给你一个 \(n\times m\) 的网格,数字在格子里,你需要取出一些格子,使得任意两个格子之间没有公共边,输出格子中的数字和的最大值. \(1 \le n,m \le 100 ...

  7. MAC中Flutter下载和安装

    Flutter官网 https://flutter.dev/docs/development/tools/sdk/releases?tab=macos   一.终端下配置系统环境变量和镜像 我的mac ...

  8. 车牌识别服务-JAVA+ONNX版本,支持全类型的车牌

    1.车牌识别简介 车牌识别分为车牌检测与识别,检测模型一般需要检查车牌的位置识别模型一般为识别车牌号及车牌的颜色类型等,目前有较多的深度学习模型能支持,这里就不详细说了. 自动识别车辆车牌信息,应用于 ...

  9. Linux防火墙部署与配置

    Linux防火墙部署与配置 1. 实验概述 Linux作为网关,搭建小型局域网,在此基础上进行实验,了解Linux防火墙的构成.NAT和包过滤配置方法等. 2. 实验环境 网络大致结构如图2-1所示, ...

  10. openstacksdk快速上手

    hello,大家好,这里是费冰,今天是大年初六,唉,这么早就被迫营业了. 那么今天来解读一波openstacksdk. Openstacksdk是什么 其实我很难说明一个是什么的问题.如果你使用过py ...