YAML 语言

Posted 思考与践行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YAML 语言相关的知识,希望对你有一定的参考价值。

1. YAML 介绍

  • YAML:以数据为中心,比JSON,XML更适合做配置文件;
//示例:
server:
    port: 8081 //此处有空格

2. YAML 基本语法

  • 使用缩进表示层级关系;
  • 缩进时,不允许使用Tab键,只允许使用空格;
  • 缩进的空格数目不重要,只有相同层级的元素左侧对齐即可;
  • 大小写敏感;

3. YAML 支持的三种数据结构

  • 对象:键值对的集合;
  • 数组:一组按次序排列的值;
  • 字面量(数字,字符串,布尔):单个的,不可再分的值;
    • 字符串默认不用加上单引号或双引号;
    • 双引号,默认不会转义字符串里面的特殊字符;
    • 单引号,会转义特殊字符,特殊字符最终只是一个普通的字符串数据;
// 编写application.yml配置文件
server:
  port: 8081

person:
    lastName: zhangsan
    age: 18
    boss: false
    birth: 2008/8/8
    maps: {k1: v1, k2: v2}
    lists:
      - zhaoliu
      - lisi
    dog:
      name: 鲁亚
      age: 12

// 实体类
public class Dog{
    private String name;
    private Integer age;

    // 省略 getter,setter,toString
}

/**
* @ConfigurationProperties 将本类中的所有属性和配置文件中相关配置进行绑定
* prefix = "person": 配置文件中哪个下面的所有属性进行一一映射;
*
* @Component
* 只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能;
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person{
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

    private Map<String, Object> maps;
    private List<Object> lists;
    private Dog dog;

    // 省略 getter,setter,toString
}

// pom.xml 中导入配置文件处理器
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

4. properties配置文件

# application.properties
# 配置person的值

person.lastName=张三
person.age=18
person.birth=2018/5/3
person.boss=false
person.maps.k1=v1
person.maps.k2=v2
person.lists=a,b,c
person.dog.name=xiaohua
person.dog.age=11

参考资料:

以上是关于YAML 语言的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 yaml-cpp 发出空值

C语言代码片段

使用 Pygments 检测代码片段的编程语言

实用的 PyYAML 使用技巧

Go语言之读取yaml配置文件,转换成struct结构,json形式输出

如果 YAML 不是标记语言,它是啥?