一、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. 预编译SQL为什么能够防止SQL注入

    前言 之前我一个搞网络安全的朋友问了我一个的问题,为啥用 PreparedStatement 预编译的 SQL 就不会有被 SQL 注入的风险? 第一时间我联想到的是八股文中关于 Mybatis 的脚 ...

  2. Java7提供的Fork/Join框架实现高并发程序,你会使用吗?

    摘要:Fork/Join框架位于J.U.C(java.util.concurrent)中,是Java7中提供的用于执行并行任务的框架,其可以将大任务分割成若干个小任务,最终汇总每个小任务的结果后得到最 ...

  3. AcWing341. 洛谷P1073, NOIP2009 最优贸易

    AcWing题目传送门 洛谷题目传送门 题目大意 \(~~~~~~\)一个投机倒把的奸商想要通过城市不太健全的贸易系统坑点钱,任意城市都可以买入或者卖出水晶球,他想尽量在便宜的城市买入,在贵的城市卖出 ...

  4. LeetCode-03 无重复字符的最长子串(Longest Substring Without Repeating Characters)

    题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 示例  1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &qu ...

  5. Java开发学习(五十)----MyBatisPlus快速开发之代码生成器解析

    1.代码生成器原理分析 造句: 我们可以往空白内容进行填词造句,比如: 在比如: 观察我们之前写的代码,会发现其中也会有很多重复内容,比如: 那我们就想,如果我想做一个Book模块的开发,是不是只需要 ...

  6. Go读取yaml文件到struct类

    1.yaml文件准备 common: secretid: AKIDxxxxx secretKey: 3xgGxxxx egion: ap-guangzhou zone: ap-guangzhou-7 ...

  7. Golang如何实现节假日不打扰用户?

    ​ 1.场景 想象下以下场景,嘿嘿...! 一个iphone用户,闹钟是可以按节假日不响的! 每日新闻机器人,节假日是可以不打扰我的! 我的业务,节假日是可以... 2.思路 要实现识别节假日,大概有 ...

  8. 使用Dapr和.NET 6.0进行微服务实战:Dapr简介

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 本文是<使用Dapr和.NET 6.0进行微服务实战>的第2篇Dapr ...

  9. 洛谷P1862输油管道问题

    题目传送门 二话不说先上代码: #include<bits/stdc++.h> using namespace std; int n; int x,y[10001]; int main() ...

  10. Coolify系列01- 从0到1超详细手把手教你上手Heroku 和 Netlify 的开源替代方案

    什么是Coolify 一款超强大的开源自托管 Heroku / Netlify 替代方案 coolLabs是开源.自托管和以隐私为中心的应用程序和服务的统称 为什么使用Coolify 只需单击几下即可 ...