YAML 文件介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YAML 文件介绍相关的知识,希望对你有一定的参考价值。
参考技术AYAML 是一种可读性非常高,与程序语言数据结构非常接近。同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。
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 文件介绍的主要内容,如果未能解决你的问题,请参考以下文章
Ansible之YAML,Inventory(主机清单)介绍