一、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. 【敏捷研发系列】前端DevOps流水线实践

    作者:胡骏 一.背景现状 软件开发从传统的瀑布流方式到敏捷开发,将软件交付过程中开发和测试形成快速的迭代交付,但在软件交付客户之前或者使用过程中,还包括集成.部署.运维等环节需要进一步优化交付效率.因 ...

  2. java的饿汉和懒汉设计模式

    本文主要讲述java的饿汉和懒汉设计模式 饿汉和懒汉设计模式的目的:使得该类的对象,只能有一个,不允许其他类,创建该类的对象. 饿汉设计模式 示例代码如下: 1 public class Hunger ...

  3. Django项目启动 AttributeError: ‘str‘ object has no attribute ‘decode‘ 问题

    Watching for file changes with StatReloader Performing system checks... System check identified no i ...

  4. OPPO 后端开发 一、二面面经

    你好,我是 Guide,看了这么多面试成功的经验分享,今天来看一个读者分享的 Oppo 秋招面试失败经历. 面经合集请看:Java面试题&面经精选集. 下面是正文(文中的我为读者本人). 个人 ...

  5. 求和【第十三届蓝桥杯省赛C++A/C组 , 第十三届蓝桥杯省赛JAVAA组】

    求和 给定 \(n\) 个整数 \(a1,a2,⋅⋅⋅,an\),求它们两两相乘再相加的和,即 \(S=a1⋅a2+a1⋅a3+⋅⋅⋅+a1⋅an+a2⋅a3+⋅⋅⋅+an−2⋅an−1+an−2⋅a ...

  6. Java基础篇——IO流

    流 内存和存储设备之间传输数据的通道 流的分类 按方向划分 输入流(读):存储设备→内存 输出流(写):内存→存储设备 按单位划分. 字节流:以字节为单位,可以读写所有数据 字符流:以字符为单位,只能 ...

  7. 迁移学习(JDDA) 《Joint domain alignment and discriminative feature learning for unsupervised deep domain adaptation》

    论文信息 论文标题:Joint domain alignment and discriminative feature learning for unsupervised deep domain ad ...

  8. 根号分治简单笔记 | P3396 哈希冲突

    简要题意 你需要维护一个长度为 \(n\) 的序列 \(v\),支持: A x y 求整个序列中,所有模 \(x\) 为 \(y\) 的下标的元素的值,即: \[\sum_{i=0}^{\lfloor ...

  9. java进阶P-2.7

    类函数 函数 用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回:对某些特殊字符,如果字符(串)正好是正则的一部分,则需要转义才能使用 字符有 | , + , * , ^ , $ , ...

  10. finally代码块-多异常的捕获处理

    finally代码块 finally :有一些特定的代码无论异常是否发生,都需要执行.另外,因为异常会引发程序跳转,导致有些语句执行不到.而finally就是解决这个问题的,在finally代码块中存 ...