yamlの基本文法を詳しく解説

序章

YAML は、「YAML Ain't a Markup Language」の再帰的な頭字語です。この言語が開発された時点では、YAML は実際には「Yet Another Markup Language」の略でした。

YAML の構文は他の高級言語に似ており、リスト、ハッシュ テーブル、スカラーなどのデータ形式を簡単に表現できます。これは、空白のインデントと多くの外観に依存する機能を使用しており、データ構造、さまざまな構成ファイル、デバッグコンテンツのダンプ、ファイルアウトラインの表現や編集に特に適しています (例: 多くの電子メールヘッダー形式は YAML に非常に近い)。

YAML の構成ファイルのサフィックスは .yml です (例: runob.yml )。

基本的な文法

  • 大文字と小文字を区別
  • インデントを使用して階層関係を示す
  • インデントにはタブは使用できません。スペースのみが使用できます。
  • 同じレベルの要素が左揃えである限り、インデントされたスペースの数は重要ではありません。
  • 「#」はコメントを意味します

データの種類

YAML は次のデータ型をサポートします。

  • オブジェクト: キーと値のペアのコレクション。マッピング/ハッシュ/ディクショナリとも呼ばれます。
  • 配列: 順番に並べられた値の集合。シーケンス(sequence)/リスト(list)とも呼ばれます。
  • スカラー: 単一の割り切れない値

YAMLオブジェクト

オブジェクトのキーと値のペアは、コロン構造を使用してkey: valueを表し、コロンの後にスペースを追加する必要があります。

key:{key1: value1, key2: value2, …}を使用することもできます

インデントを使用して階層関係を示すこともできます。

key: 
    child-key: value
    child-key2: value2

より複雑なオブジェクト形式の場合は、疑問符とスペースを使用して複雑なキーを表し、コロンとスペースを使用して値を表すことができます。

?  
    - complexkey1
    - complexkey2
:
    - complexvalue1
    - complexvalue2

これは、オブジェクトの属性が配列 [complexkey1, complexkey2] であり、対応する値も配列 [complexvalue1, complexvalue2] であることを意味します。

YAML配列

- で始まる行は、配列を形成することを意味します。

- A
- B
- C

YAML は多次元配列をサポートしており、インラインを使用して表現できます。

key: [value1, value2, ...]

データ構造の子メンバーは配列であるため、項目の下にスペースを 1 つインデントできます。

-
 - A
 - B
 - C

比較的複雑な例:

companies:
    -
        id: 1
        name: company1
        price: 200W
    -
        id: 2
        name: company2
        price: 500W

これは、 Companies 属性が配列であり、各配列要素が id、name、price の 3 つの属性で構成されることを意味します。

配列はフロー形式で表すこともできます。

companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]

複合構造

配列とオブジェクトは、次のような複合構造を形成できます。

languages:
  - Ruby
  - Perl
  - Python 
websites:
  YAML: yaml.org 
  Ruby: ruby-lang.org 
  Python: python.org 
  Perl: use.perl.org

json に変換すると次のようになります。

{ 
  languages: [ 'Ruby', 'Perl', 'Python'],
  websites: {
    YAML: 'yaml.org',
    Ruby: 'ruby-lang.org',
    Python: 'python.org',
    Perl: 'use.perl.org' 
  } 
}

スカラー

スカラーは、最も基本的な割り切れない値であり、次のものが含まれます。

  • ブール値
  • 整数
  • 浮動小数点数
  • ヌル
  • 時間
  • 日にち

例を使用して、スカラーの基本的な使用法をすぐに理解します。

boolean: 
    - TRUE  #true,True都可以
    - FALSE  #false,False都可以
float:
    - 3.14
    - 6.8523015e+5  #可以使用科学计数法
int:
    - 123
    - 0b1010_0111_0100_1010_1110    #二进制表示
null:
    nodeName: 'node'
    parent: ~  #使用~表示null
string:
    - 哈哈
    - 'Hello world'  #可以使用双引号或者单引号包裹特殊字符
    - newline
      newline2    #字符串可以拆成多行,每一行会被转化成一个空格
date:
    - 2018-02-17    #日期必须使用ISO 8601格式,即yyyy-MM-dd
datetime: 
    -  2018-02-17T15:02:31+08:00    #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区

引用

& アンカーと * エイリアスは、以下を参照するために使用できます。

defaults: &defaults
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  <<: *defaults

test:
  database: myapp_test
  <<: *defaults

に相当:

defaults:
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  adapter:  postgres
  host:     localhost

test:
  database: myapp_test
  adapter:  postgres
  host:     localhost

&はアンカー ポイントを確立するために使用され (デフォルト)、<<は現在のデータにマージすることを意味し、*はアンカー ポイントを参照するために使用されます。

別の例を次に示します。

- &showell Steve 
- Clark 
- Brian 
- Oren 
- *showell 

次のように JavaScript コードに変換します。

[ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]

おすすめ

転載: blog.csdn.net/weekdawn/article/details/124433782