YAML文件结构简介
admin
2023-06-15 07:43:06
0

在看drupal8,发现其模块和主题的定义使用的是YAML文件。drupal8使用的Symfony框架中YAML文件结构,故翻译整理学习下,有理解不准确的地方请多多指教。

String

一般字符串可以使用单引号,双引号或者不使用引号

A string in YAML
'A singled-quoted string in YAML'
"A double-quoted string in YAML"

当使用单引号字符串时,其内容中的任何单引号必须加倍才能转义:

'A single quote '' inside a single-quoted string'

包含以下任何字符都需要引号,可以使用单引号或双引号,但使用单引号更方便

:, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, `

双引号方式提供了以一种表示任意字符串的方法,使用\来转义字符和序列

\0, \x01, \x02, \x03, \x04, \x05, \x06, \a, \b, \t, \n, \v, \f, \r, \x0e, \x0f, \x10, \x11,  \x12, \x13, \x14, \x15, \x16, \x17, \x18, \x19, \x1a, \e, \x1c, \x1d, \x1e, \x1f, \N, \_, \L, \P

"A double-quoted string in YAML\n"

注:测试发现,当字符串中包含上面字符时,使用单引号也可以转义的

最后还有其他一些情况,不管你使用单引号还是双引号

  • true or false ( 否则就是布尔值 )  

  • null or ~ (否则认为是null)

  • 当看起来像整数如2,14;浮点数如2.6,14.9;指数如12e7等,否则被视为一个数值

  • 当看起来像一个日期如2014-12-31,否则会自动转为一个Unix时间戳

'true'
'null'
'2.14'
'2014-12-31'

当一个字符串中包含换行符时,可以使用由(|)管道符来指示该字符串将跨越多行。在文字中,换行符被保存下来

|
  \/ /| |\/| |
  / / | |  | |__

或者字符串可以使用折叠样式编写,用>表示,其中每行换行符被空格替换

>  
  This is a very long sentence
  that spans several lines in the YAML
  but which will be rendered as a string
  without carriage returns.

Numbers

12 #十进制
014 #八进制
0xC #十六进制
13.4 #浮点数
1.2e+24 #指数
.inf #无穷

Nulls

null
~

Booleans

true
false

Dates

#简单日期
2002-12-14

Collections

- PHP
- Perl
- Python

对应PHP为

array('PHP','perl','Python')
PHP:    5.2
MySQL:  5.1
Apache: 2.2.20

对应PHP为

array('PHP' => 5.2, 'MySQL' => 5.1, 'Apache' => '2.2.20');
'symfony 1.0':
  PHP:    5.0
  Propel: 1.2
'symfony 1.2':
  PHP:    5.2
  Propel: 1.3

对应PHP为

array(
    'symfony 1.0' => array(
        'PHP'    => 5.0,
        'Propel' => 1.2,
    ),
    'symfony 1.2' => array(
        'PHP'    => 5.2,
        'Propel' => 1.3,
    ),
);

在YAML文件中使用缩进时需要记住一件重要的事情:缩进必须由一个或多个空格完成,但从不使用制表符。

也可以根据需要嵌套序列和映射

'Chapter 1':
  - Introduction
  - Event Types
'Chapter 2':
  - Introduction
  - Helpers

也可使用明显的指示符而不是缩进

[PHP, Perl, Python] 
{ PHP: 5.2, MySQL: 5.1, Apache: 2.2.20 }
'Chapter 1': [Introduction, Event Types]
'Chapter 2': [Introduction, Helpers]
'symfony 1.0': { PHP: 5.0, Propel: 1.2 }
'symfony 1.2': { PHP: 5.2, Propel: 1.3 }

注释

#comment on a line

Explicit Typing

YAML规范定义了一些标签来显式地设置任何数据类型:

data:
  # this value is parsed as a string (it's not transformed into a DateTime)
  start_date: !!str 2002-12-14

  # this value is parsed as a float number (it will be 3.0 instead of 3)
  price: !!float 3

  # this value is parsed as binary data encoded in base64
  picture: !!binary |
  R0lGODlhDAAMAIQAAP//9/X
  17unp5WZmZgAAAOfn515eXv
  Pz7Y6OjuDg4J+fn5OTk6enp

Unsupported YAML Features

Symfony Yaml组件不支持以下YAML特性:

  • Multi-documents (--- and ... markers); 多文档(---和...标记);

  • Complex mapping keys and complex values starting with ?;以?开头的复杂映射键和复数值;

  • Tagged values as keys;标记为键的值;

  • 下面标签和类型: !!set, !!omap, !!pairs, !!set, !!seq, !!bool, !!int, !!merge, !!null, !!timestamp, !!value, !!yaml;

  • 标记(TAG指令;例如:%TAG!标记:example.com,2000:app /)和标记引用(例如:!);

  • 映射元素使用类似序列的语法(例如:{foo,bar};改为使用{foo:〜,bar:〜})


原文地址:http://symfony.com/doc/current/components/yaml/yaml_format.html

验证地址:https://codebeautify.org/yaml-to-json-xml-csv


---

仅供个人理解参考


上一篇:获取form所有name值

下一篇:数组array集合

相关内容

热门资讯

凤凰晚报丨投毒杀人者、 三体公... 今日人物【风暴眼丨中国版“绝命毒师”伏法!揭秘三体原CEO许垚投毒轨迹】“三体公司”原CEO许垚,被...
大润发创始人尹衍樑逝世,享年7... 5月26日,润泰集团证实,润泰集团总裁、唐奖创办人、大润发创始人尹衍樑,于2026年5月26日凌晨4...
全国科技工作者日 |市科协搭台... 科技创新是很多中小企业的“短板”,为帮助企业解决技术难题,5月20日,泰州市科协组织“工博士”科技服...
LLC磁集成变压器厂家梳理 新... 导语:LLC磁集成变压器作为高频变压器领域的技术分支,凭借高功率密度、低损耗等特性,成为新能源、工业...
王坚院士:人工智能已成为最重要... “今天人工智能已经变得跟数学一样基础。大家不要认为人工智能只属于IT行业,甚至不要把它当成一个具体行...
2026年6月企业管控AI工作... 2026年,企业数字化管控进入深水区,销售客资流失、过程难监管、投流转化低、新人成长慢,已成为阻碍企...
爱奇艺被骂惨后,它带着10万个... 作者|周松 原创首发|蓝字计划 爱奇艺AI艺人争议的余温还在,另一门更大的“假人”生意已经站到了港交...
68岁男子出轨“90后”,被指... 5月25日,“妻子状告68岁丈夫向90后女子转账近4800万”一案开庭。红星新闻记者从原告李女士方获...
惊人让步!特朗普的新帖子炸了 北京时间周二早上跟伊朗相关发生两件“大事”。一件是美军轰炸伊朗南部的布雷船和导弹阵地,而在那之前伊朗...
德国华人连环迷奸案,“体面人”... 当地时间5月20日上午,柏林地方法院一楼门外,自发前来旁听的人们沿着狭窄的旋转楼梯,一路排到了三楼。...