YAML 文件介绍

Posted

tags:

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

参考技术A

YAML 是一种可读性非常高,与程序语言数据结构非常接近。同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。

YAML是 "YAML Ain\'t a Markup Language"(YAML不是一种标记语言)的递归缩写。

这么命名的方式,表示 YAML 强调的不是标记,而是数据本身。

YAML 参考了其他多种语言,包括:XML、C语言、Python、Perl 以及电子邮件格式 RFC2822。

YAML 发布与 2001 年,之前并不出名,现在逐渐开始流行。测试圈中,主要应用于自动化测试过程,用来进行数据驱动的数据存储载体。

基本语法规则(很接近 Python 的语法规则):

支持的数据格式:

以下是 YAML 数据格式的示例:

对象

转换为Python字典格式为

YAML也支持另一种对象的写法,将所有的键值对写成一个行内对象

转换为Python字典格式为

数组

一组连词线开头的行,构成一个数组

转换为Python

也可以通过缩进空格来表示多维数组

转换为Python的列表

当然,也可以采用行内表示法

转换为Python

纯量
纯量是最基本的、不可再分的值。 以下数据类型都是常见的纯量。

纯量一般表示如下

转换为Python

yaml 文件通过 pyyaml 库转换后就是 Python 中对应的数据类型。直接进行操作即可,相较从 excel 中读取数据全部是字符串的方式来说,处理更方便。相对于 json 格式,可读性更高。

SpringBoot配置:yaml介绍

一、介绍yml  

1、Spring Boot使用一个全局的配置文件(配置文件的名字是固定的)

  (1)application.properties

  (2)application.yml

2、配置文件放在src/main/resources目录或者类路径/config下

3、yml是YAML(YAML Ain‘t Markup Lanaguage)语言文件,以数据为中心,比josn,xml更适合做配置文件 。http://http:www.yaml.org参考语法规范。

 

二、YAML语法:

1、基本语法:

  k:(空格)v   : 表示一对键值对(空格必须有

  以空格的缩进来控制层级关系,只要是右对齐的一列数据,都是一个层级的 

       属性和值也是大小写敏感的。

server:
  port: 8081
  path:/hello

2、值的写法

  (1)普通的值(数字、字符串、布尔值)

  k: v    : 字面直接来写。

  字符串默认不用加单引号或双引号;

  如果使用双引号:字符串中有特殊字符的话,不能识别特殊字符,不会进行转义。

  例如:     

  name: "zhangsan lisi"      输出:     zhangsan  换行   lisi

  如果使用单引号,特殊字符会转成普通字符输出。

  输出:zhangsan lisi

 

  (2)Map

  k: v :在下一行来写属性和值的关系,注意缩进

  对象还是k: v的方式

friends:
    lastName: zhangsan
    age: 20

  行内写法:

friends: {lastName: zhangsan,age: 20}

 数组(List、Set):

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

pets:
    - cat
    - dog
    - pig

行内写法:

pets: [cat,dog,pig]

 

 

示例:

bean文件

  

package com.song.bean;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**j将配置文件中每一个属性值映射到这个数组中,
 *ConfigurationProperties告诉Spring boot将本类中所有属性和配置文件中相关的配置绑定
 * prefix = "person":配置文件中那个下的所有属性进行一一映射
 *只有这个组件是容器中的组件,才能使用容器提供的功能
 * Created by Administrator on 2018/6/12 0012.
 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private  String lastName;
    private  Integer age;
    private Boolean boos;
    private Date birth;

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

    private Dog dog;


    @Override
    public String toString() {
        return "Person{" +
                "lastName=‘" + lastName +  +
                ", age=" + age +
                ", boos=" + boos +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", dog=" + dog +
                };
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Boolean getBoos() {
        return boos;
    }

    public void setBoos(Boolean boos) {
        this.boos = boos;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Map<String, Object> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public List<Object> getLists() {
        return lists;
    }

    public void setLists(List<Object> lists) {
        this.lists = lists;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }
}

 yaml文件

person:
   lastName: zhangsan
   age: 18
   boss: true
   birth: 2017/12/12
   maps: {name: 小花,age: 2}
   lists:
     - lisi
     - zhaoliu
   dog:
    name: 小花
    age: 2    

pom.xml的依赖配置

<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

最后测试打印结果为:

Person{lastName=‘zhangsan‘, age=18, boos=null, birth=Tue Dec 12 00:00:00 GMT+08:00 2017, maps={name=小花, age=2}, lists=[lisi, zhaoliu], dog=Dog{name=‘小花‘, age=2}}

  

对应的properties文件配置

person.lastName=zhangsan
person.age=28
person.maps.k1=xiahua
person.maps.k2=lisi
person.dog.name=xiaohua 
person.dog.age=2
person.lists=a,b,c

 






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

SpringBoot配置:yaml介绍

playbook 介绍

Ansible之YAML,Inventory(主机清单)介绍

Kubernetes - YAML文件解读

Hyperledger Fabric 介绍几个关键配置文件(三)

linux12k8s --> 04资源管理和YAML 文件详解