YAML
来自YAML官方网站 (http://www.yaml.org/) 的定义: YAML是一种直观的能够被电脑识别的的数据数据序列化格式,他并且容易被人类阅读,容易和脚本语言交互的。换种说法,YAML是一种很简单的类似于XML的数据描述语言,语法比XML简单很多。他在描述能够被转化成数组或hash的数据是很有用,例如:
house:
family:
name: Doe
parents:
- John
- Jane
children:
- Paul
- Mark
- Simone
address:
number: 34
street: Main Street
city: Nowheretown
zipcode: 12345
解析这个YAML将会自动创建下面的PHP数组:
$house = array(
'family' => array(
'name' => 'Doe',
'parents' => array('John', 'Jane'),
'children' => array('Paul', 'Mark', 'Simone')
),
'address' => array(
'number' => 34,
'street' => 'Main Street',
'city' => 'Nowheretown',
'zipcode' => '12345'
)
);
在YAML里面,结构通过缩进来表示,连续的项目通过减号"-"来表示,map结构里面的key/value对用冒号":"来分隔。YAML也有用来描述好几行相同结构的数据的缩写语法,数组用'[]'包括起来,hash用'{}'来包括。因此,前面的这个YAML能够缩写成这样:
house:
family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] }
address: { number: 34, street: Main Street, city: Nowheretown, zipcode: 12345 }
YAML是"YAML Ain't Markup Language(YAML不是一种标记语言)"的缩写。这种格式大约是2001年出现的,现在为止已有多种语言的YAML解析器。
提示 YAML格式的周详规格能够在YAML官方网站http://www.yaml.org/找到。
如您所见,写YAML要比XML快得多(无需关闭标签或引号),并且比'.ini'文档功能更强(ini文档不支持层次)。所以symfony选择YAML作为配置信息的最好选择格式。在本书您会看到很多YAML文档,但是他很直观您用不着更深入地研究YAML。
关于YAML的文字含义:
JYaml简介
YAML使用实现语言的数据类型。我们看一下一些JYaml支持的Java数据类型:
原始数据和封装类(比如int,java.lang.Integer)JavaBean兼容对象(Structure支持)Collection (sequence支持)ListSetMap (map支持)Arrays (sequence支持)BigInteger 和BigDecimalDate 我们给出John.yaml的java描述:
public class Person {
private String name;
private int age;
private Person sponse;
private Person[] children; // setXXX, getXXX方法略.
}
YAML的适用范围
由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript。除了Java,其他都是脚本语言.
YAML比较适合做序列化。因为它是宿主语言数据类型直转的。
YAML做配置文件也不错。比如Ruby on Rails的配置就选用的YAML。对ROR而言,这很自然,也很省事.
由于兼容性问题,不同语言间的数据流转建议现在不要用YAML.
YAML存在的意义
无论多么完美的事物,都需要有对立面,有说“NO”的声音。XML也不例外。当然,站在主流的对立面,需要勇气和智慧。
YAML和XML不同,没有自己的数据类型的定义,而是使用实现语言的数据类型。这一点,有可能是出奇制胜的地方,也可能是一个败笔。如果兼容性保证的不好的话,YAML数据在不同语言间流转会有问题。如果兼容性好的话,YAML就会成为不同语言间数据流通的桥梁。建议yaml.org设立兼容认证机制,每个语言的实现必须通过认证。
假如兼容性没问题的话,YAML就太完美了。轻巧,敏捷,高效,简便,通用。这才是理想中的数据模型。当然就现在而言,这还只是个理想。
分享到:
相关推荐
pyyaml模块在python中用于处理yaml格式数据,主要使用yaml.safe_dump()、yaml.safe_load()函数将python值和yaml格式数据相互转换。当然也存在yaml.dump()、yaml.load()函数,同样能实现数据转换功能,只是官方不太...
赠送jar包:jackson-dataformat-yaml-2.11.4.jar; 赠送原API文档:jackson-dataformat-yaml-2.11.4-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.11.4-sources.jar; 赠送Maven依赖信息文件:jackson-data...
赠送jar包:jackson-dataformat-yaml-2.11.4.jar; 赠送原API文档:jackson-dataformat-yaml-2.11.4-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.11.4-sources.jar; 赠送Maven依赖信息文件:jackson-data...
yaml文件 Yaml 是⼀种所有编程语⾔可⽤的友好的数据序列化标准。语法和其他⾼阶语⾔类似,并且可以简单表达字 典、列表和其他基本数据类型的 形态。语法规则如下: 1. ⼤⼩写敏感。 2. 使⽤缩进表⽰层级关系。 3. 使...
ingress的yaml文件
1. 资源内容:实际游戏项目中使用的简化版 k8s yaml 生成工具,由 Go 语言编写 2. 应用场景: a. 部署时需要现写/维护已有的 yaml,例如更改 deployment、service、hpa、ingress、configmap 等 b. 需要批量部署一...
yaml-cpp-yaml-cpp-0.6.0.tar.gz
spring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot-config-yaml.jarspring-boot...
赠送jar包:jackson-dataformat-yaml-2.10.0.jar; 赠送原API文档:jackson-dataformat-yaml-2.10.0-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.10.0-sources.jar; 赠送Maven依赖信息文件:jackson-data...
k8s部署nacos集群的yaml文件,持久化支持nfs部署.创建nfs的存储类型与pvc等yaml文件
yaml文件 yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门...
yaml-cpp库的编译&安装 一、 下载 二、 解压缩 三、 编译&安装 四、 使用说明
赠送jar包:jackson-dataformat-yaml-2.10.0.jar; 赠送原API文档:jackson-dataformat-yaml-2.10.0-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.10.0-sources.jar; 赠送Maven依赖信息文件:jackson-data...
赠送jar包:jackson-dataformat-yaml-2.8.10.jar; 赠送原API文档:jackson-dataformat-yaml-2.8.10-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.8.10-sources.jar; 赠送Maven依赖信息文件:jackson-data...
kubernetes的calico网络插件的yaml
赠送jar包:jackson-dataformat-yaml-2.8.6.jar; 赠送原API文档:jackson-dataformat-yaml-2.8.6-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.8.6-sources.jar; 赠送Maven依赖信息文件:jackson-data...
赠送jar包:jackson-dataformat-yaml-2.8.6.jar; 赠送原API文档:jackson-dataformat-yaml-2.8.6-javadoc.jar; 赠送源代码:jackson-dataformat-yaml-2.8.6-sources.jar; 赠送Maven依赖信息文件:jackson-data...
MatLab的YAML库文件
YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。Yaml文件解析库,源码,CPP。
c++版yaml库yaml-cpp