简明YAML教程
来源:互联网 发布:餐饮订餐软件 编辑:程序博客网 时间:2024/05/29 10:11
前言: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, falseisOnline: false#null用波浪线表示isNUll: ~#时间采用iso8601time: 2001-12-14t21:59:43.10-05:00#日期用复合ios8601表示date: 2017-09-01#两个感叹号表示强转数据类型a: !!str 123b: !!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.comusername: 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: 1name: asdparams: event: what's up url: http://baidu.comfavoriteBooks: - 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
阅读全文
1 0
- 简明YAML教程
- yaml 教程
- YAML 语言教程
- YAML 语言教程
- YAML 语言教程
- YAML 语言教程
- YAML 语言教程
- YAML 语言教程
- YAML 语言教程
- YAML 语言教程
- YAML 语言教程
- 推荐YAML教程
- YAML 语言教程
- YAML 语言教程
- YAML 语言教程
- YAML 语言教程
- YAML 语言教程
- 配置文件之YAML语言教程
- HTML5+js的两种轮播图(静态获取图片方法和动态获取图片)
- 读书笔记-穿越计算机的迷雾
- 文本每三行合并成一行
- POJ 3268 sliver cow party
- cuda矩阵转置
- 简明YAML教程
- C++个人编程标准(字符、指针、字符串)
- 用JS实现系统登录页的登录和验证
- Connection: close(http协议短链接)和Connection: keep-alive(http协议长链接)有什么区别?
- JSP九大内置对象的作用和用法总结
- cf 389D Fox and Minimal path 【构造】
- 数据结构(c语言)线性表-顺序表
- GPIO Product Guide笔记(Xilinx)
- 1006.换个格式输出整数(字符串处理)