yaml 格式

Posted 思齐

tags:

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

yaml:Yet Another Markup Language

优点:
1、语法简单,大纲方式呈现,可读性高
2、使用空白字符和分行来分隔资料,可以用于 grep、Python、Perl、Ruby操作
3、减少了很多符号,引号,括号等
4、提取记录之前不需要全部读取数据

用途:可以做序列化或配置文件


格式:
1、字串不一定要用双引号标识;
2、在缩排中空白字符的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了(不过不能使用TAB字符);
3、允许在文件中加入选择性的空行,以增加可读性;
4、在一个档案中,可同时包含多个文件,并用“——”分隔;
5、选择性的符号“...”可以用来表示档案结尾(在利用串流的通讯中,这非常有用,可以在不关闭串流的情况下,发送结束讯号)。


缺点:YAML没有自己的数据类型的定义,而是使用实现语言的数据类型。
相同的字符串不同的语言解析的类型不同,存在兼容性问题

yaml 中 map是有序的,json中没有
要将YAML置入JSON中,需要用引号框住,并转换内部的所有引号

 

php示例

$yaml = <<<EOD
--- #文档开始符
invoice: 34843 #map结构,注意空格
date: "2001-01-23" #字符串可以不用引号,但有特殊字符时需要
bill-to: &id001 #锚点
  given: Chris
  family: Dumars
  address:
    lines: |- # |  后的字符串换行符会保留
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
ship-to: *id001 #引用锚点
product:
- sku: BL394D
  quantity: 4
  description: Basketball
  price: 450
- sku: BL4438H
  quantity: 1
  description: Super Hoop
  price: 2392
tax: 251.420000
total: 4443.520000
comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
... #文档开始符,单个文档可省略
EOD;

$parsed = yaml_parse($yaml);
ee($parsed);

 

 

参考:

http://www.yaml.org/spec/1.2/spec.html# 

在线js解析器

http://www.stay-stupid.com/?p=357

官方文档

 

以上是关于yaml 格式的主要内容,如果未能解决你的问题,请参考以下文章

Y服务-你真的懂 Yaml 吗

Python 读写和解析 YAML 文件格式

无法使用 yaml-cpp 发出空值

如何在 Javadoc 中使用 @ 和 符号格式化代码片段?

Airbnb案例:Ruby on Rails YAML格式化字符串时导致的远程代码执行

为 Blogger 上的博客格式化代码片段 [关闭]