YML

一、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

 

 







posted @ 2022-02-24 16:38  二人了一  阅读(397)  评论(0编辑  收藏  举报