溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

YAML文件結(jié)構(gòu)簡(jiǎn)介

發(fā)布時(shí)間:2020-07-06 20:29:12 來(lái)源:網(wǎng)絡(luò) 閱讀:883 作者:ADUJ 欄目:web開發(fā)

在看drupal8,發(fā)現(xiàn)其模塊和主題的定義使用的是YAML文件。drupal8使用的Symfony框架中YAML文件結(jié)構(gòu),故翻譯整理學(xué)習(xí)下,有理解不準(zhǔn)確的地方請(qǐng)多多指教。

String

一般字符串可以使用單引號(hào),雙引號(hào)或者不使用引號(hào)。

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

當(dāng)使用單引號(hào)字符串時(shí),其內(nèi)容中的任何單引號(hào)必須加倍才能轉(zhuǎn)義:

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

包含以下任何字符都需要引號(hào),可以使用單引號(hào)或雙引號(hào),但使用單引號(hào)更方便

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

雙引號(hào)方式提供了以一種表示任意字符串的方法,使用\來(lái)轉(zhuǎn)義字符和序列

\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"

注:測(cè)試發(fā)現(xiàn),當(dāng)字符串中包含上面字符時(shí),使用單引號(hào)也可以轉(zhuǎn)義的

最后還有其他一些情況,不管你使用單引號(hào)還是雙引號(hào)

  • true or false ( 否則就是布爾值 )  

  • null or ~ (否則認(rèn)為是null)

  • 當(dāng)看起來(lái)像整數(shù)如2,14;浮點(diǎn)數(shù)如2.6,14.9;指數(shù)如12e7等,否則被視為一個(gè)數(shù)值

  • 當(dāng)看起來(lái)像一個(gè)日期如2014-12-31,否則會(huì)自動(dòng)轉(zhuǎn)為一個(gè)Unix時(shí)間戳

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

當(dāng)一個(gè)字符串中包含換行符時(shí),可以使用由(|)管道符來(lái)指示該字符串將跨越多行。在文字中,換行符被保存下來(lái)

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

或者字符串可以使用折疊樣式編寫,用>表示,其中每行換行符被空格替換

>  
  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 #十進(jìn)制
014 #八進(jìn)制
0xC #十六進(jìn)制
13.4 #浮點(diǎn)數(shù)
1.2e+24 #指數(shù)
.inf #無(wú)窮

Nulls

null
~

Booleans

true
false

Dates

#簡(jiǎn)單日期
2002-12-14

Collections

- PHP
- Perl
- Python

對(duì)應(yīng)PHP為

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

對(duì)應(yīng)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

對(duì)應(yīng)PHP為

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

在YAML文件中使用縮進(jìn)時(shí)需要記住一件重要的事情:縮進(jìn)必須由一個(gè)或多個(gè)空格完成,但從不使用制表符。

也可以根據(jù)需要嵌套序列和映射

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

也可使用明顯的指示符而不是縮進(jìn)

[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規(guī)范定義了一些標(biāo)簽來(lái)顯式地設(shè)置任何數(shù)據(jù)類型:

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); 多文檔(---和...標(biāo)記);

  • Complex mapping keys and complex values starting with ?;以?開頭的復(fù)雜映射鍵和復(fù)數(shù)值;

  • Tagged values as keys;標(biāo)記為鍵的值;

  • 下面標(biāo)簽和類型: !!set, !!omap, !!pairs, !!set, !!seq, !!bool, !!int, !!merge, !!null, !!timestamp, !!value, !!yaml;

  • 標(biāo)記(TAG指令;例如:%TAG!標(biāo)記:example.com,2000:app /)和標(biāo)記引用(例如:!<tag:example.com,2000:app / foo>);

  • 映射元素使用類似序列的語(yǔ)法(例如:{foo,bar};改為使用{foo:?,bar:?})


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

驗(yàn)證地址:https://codebeautify.org/yaml-to-json-xml-csv


---

僅供個(gè)人理解參考


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI