您的位置:首页 > 编程语言 > Java开发

简明YAML教程

2017-09-05 17:24 246 查看
前言:yaml是一种用来描述配置的语言,其可读性和简洁性较json更胜一筹,用yml写成的配置文件,以.yml结尾。

YAML的基本语法规则

大小写敏感

使用缩进表示层级关系

缩进是使用空格,不允许使用tab

缩进对空格数目不敏感,相同层级需对齐

用“#”表示行注释

YAML的数据结构

YAML的数据结构比较简单,只有三种:

1. 对象:类似map,用键值对表示

2. 数组:与java数组同含义

3. 纯量(scalars):元数据,不可再分,多数情况下指基本数据类型

以上三种数据接口分别如下表示:(注意,冒号和连词线后边有一个空格)

对象:

name:zhangsan


或者用行内元素表示

student:{name:zhangsan,age:13}


数组:一组以连词线
-
构成的数据结构,

- A
- B
- C


纯量

包括:字符串,布尔值,整数,浮点数,null,时间,日期,

#数值直接表示
number: 1.1
#布尔用true, false
isOnline: false
#null用波浪线表示
isNUll: ~
#时间采用iso8601
time: 2001-12-14t21:59:43.10-05:00
#日期用复合ios8601表示
date: 2017-09-01
#两个感叹号表示强转数据类型
a: !!str 123
b: !!str true


其中字符串是比较复杂的一种情况:

#字符串默认不用引号
str: 这是一个字符串
#字符串有空格或者特殊字符时,放在引号内(单双都可)
str: 'this is a string'
#字符串中间有单引号,需要用两个单引号转义
str: 'he''s name is X'


JAVA解析yml

yml作为一种通用的配置语言,各语言均有对应的解析工具,这里以java的SnakeYAML为例:

maven仓库地址:

http://mavenrepository.com/artifact/pl.droidsonroids.yaml/snakeyaml


maven配置:

<dependency>
<groupId>pl.droidsonroids.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.18.2</version>
</dependency>


新建yml文件

这里新建一个简单的yml配置文件:

文件名:config.yml

内容:

api_host: http://baidu.com username: aaa


Java解析

Yaml yaml = new Yaml();
File file = new File("D:\\code\\ymltest\\src\\main\\resources\\config.yml");
FileInputStream fi= null;
try {
fi = new FileInputStream(file.getAbsolutePath());
Object result = yaml.load(fi);
System.out.println(result.getClass());
System.out.println(result);
} catch (FileNotFoundException e) {
e.printStackTrace();
}


解析结果:

class java.util.LinkedHashMap
{api_host=http://baidu.com, username=aaa}


SnakeYAML也支持直接映射为对象:

age: 1
name: asd
params:
event: what's up
url:  http://baidu.com favoriteBooks:
- Gone with the wind
- The Little Prince


Yaml yaml = new Yaml();
File file = new File("D:\\code\\ymltest\\src\\main\\resources\\config.yml");
FileInputStream fi= null;
try {
fi = new FileInputStream(file.getAbsolutePath());
Configs result = yaml.loadAs(fi, Configs.class);
System.out.println(result.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
}


解析结果:

Configs{age=1, name='asd', params={event=what's up, url=http://baidu.com}, favoriteBooks=[Gone with the wind, The Little Prince]}


至此,yml文件已经解析完毕,在最新的版本中,该解析器已经支持在移动端使用,所以在安卓中也可以考虑使用yml对工程进行配置

参考:

http://www.ruanyifeng.com/blog/2016/07/yaml.html?f=tt

4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  yml 配置 java