[復刻版] YAMLのクイックスタート

YAMLのクイックスタート

HTTPS:// www.jianshu.com/p/97222440cd08は

、後に、より多くの使用します。

 

我々は、プロパティファイルを導入する最初のもので、Propertiesオブジェクトとプロパティファイルを使用して簡単にアプリケーションの構成に適用することができ、Javaのを学びます。XMLの導入は、我々は時間の階層関係のパフォーマンスとの関係の形式と構造の性質を紹介するときに、非常に欠け、およびXMLデータフォーマットは、より優れた、より複雑なデータ内容と表示面に記載されています。バックの紹介JSON形式、我々はJSON形式は(そのようnginxのとスクリプト言語のほとんどのプロファイルなど)の設定ファイルの多くはJSONを使用しての方法に使用されているので、今、(データ形式の制限が削除されるよりも)XML形式で、より便利であることがわかり複雑な設定の目的Springbootの出現を含め、完全にもある程度XMLを削除します。

Springbootでは、設定を完了するためにプロパティまたはYAMLファイルを使用することをお勧めしますが、より複雑なデータ構造の道のために、YAMLは、はるかに優れた特性を有しています。本論文では、YAMLの急速な一般的な構文について説明します。

プロパティSpringboot YAMLファイルと対応するファイルの比較を初めて目:

#properties(示例来源于Springboot User guide):

environments.dev.url=http://dev.bar.com environments.dev.name=Developer Setup environments.prod.url=http://foo.bar.com environments.prod.name=My Cool App my.servers[0]=dev.bar.com my.servers[1]=foo.bar.com 

階層、プロパティの処理が重要なパス説明階層(または属性)、およびそのようなenvironments.dev.urlのenvironments.dev.nameを必要とするとき、それは明らかに見ることができます。第二に、そのようなアレイ(my.servers)などのより複雑な構造のために、より複雑な書き込みます。対応YAML形式のファイルは、はるかに簡単です:

#YAML格式
environments:
    dev:
        url: http://dev.bar.com name: Developer Setup prod: url: http://foo.bar.com name: My Cool App my: servers: - dev.bar.com - foo.bar.com 

配列要素を表し- ()あなたは、視覚的にダッシュを使用し、YAMLは階層のコロンインデント方法の代表(プロパティ)の関係を使用して、見ることができます。
デモの後、あなたは明らかにファイルの優れた特性のためのYAMLの場所を見ることができます。

はじめに

YAMLは直下使用することが最も基本的な、最も一般的に使用されるフォーマットを示しています。
まず、3つのフォーマット、すなわち、一定の値、およびオブジェクトの配列でYAML表現を可能にする
次のような

#即表示url属性值;
url: http://www.wolfcode.cn 
#即表示server.host属性的值; server: host: http://www.wolfcode.cn #数组,即表示server为[a,b,c] server: - 120.168.117.21 - 120.168.117.22 - 120.168.117.23 #常量 pi: 3.14 #定义一个数值3.14 hasChild: true #定义一个boolean值 name: '你好YAML' #定义一个字符串 

注記

そして、同じ性質、使用#がコメントとして、YAMLはコメントだけを並べます。

基本フォーマットの要件

敏感1、YAMLの場合、
2、インデント代表階層関係;
3、インデントスペースを使用することができないTAB、スペースの数が必要とされない、唯一同じレベル左(典型的には二つまたは四つの空間)

オブジェクト

値:フォーマットキーの代わりにコロンを使用してください。コロンの後にスペースを追加するには:

key: value

あなたはインデント階層を使用することができます。

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

YAMLは、(フロー)文法オブジェクトをストリーミングすることは、上記の例のように表される担体として書くことができます。

key: {child-key: value, child-key2: value2} 

より複雑なオブジェクトフォーマットには、疑問符を使用することができますし、スペースがコロンで、複雑なキーを表し、スペースが値を表します。

?  
    - complexkey1
    - complexkey2
:
    - complexvalue1
    - complexvalue2

すなわち、オブジェクトの意味属性は、対応する値が配列である配列[complexkey1、complexkey2]が[complexvalue1、complexvalue2]

配列

項目の配列を表し、ダッシュやスペースを使用します。

hobby:
    - Java
    - LOL

もちろん、そのような文言があることができます:

-
    - Java
    - LOL

[Java(登録商標)、LOL]:これは単に理解することができる
A比較的複雑な例:

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

手段企業プロパティはアレイ、ターンID内の各アレイ要素、名、価格3つの属性の構成図である。
アレイモードストリーム(流れ)表現を用いることもできます。

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

定数

整数、浮動小数点、文字列、NULL、日付、ブール値、時間:YAMLであって、一定の構造の多様性を提供します。定数の使用の簡単な概要を使用するには、次の例:

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连接,最后使用+代表时区 

いくつかの特殊記号

YAMLはいくつかの共通の簡単な紹介ここでは、特殊記号の多くを提供します:
1、--- YAMLは、同じファイルでも使用することができます---文書の始まりを示す;ようなプロファイルの定義としてSpringboot:

server:
    address: 192.168.1.100
---
spring: profiles: development server: address: 127.0.0.1 --- spring: profiles: production server: address: 192.168.1.120 

プロファイルは、1開発、生産、2人の代表を定義します。---また、多くの場合、ログ記録など、さまざまなコンテンツを分離するために使用されます。

---
Time: 2018-02-17T15:02:31+08:00 User: ed Warning: This is an error message for the log file --- Time: 2018-02-17T15:05:21+08:00 User: ed Warning: A slightly different error message. 

2、...と---使用して、コンフィギュレーション・ファイル内のファイルの終わりを意味します:

---
time: 20:03:20
player: Sammy Sosa action: strike (miss) ... --- time: 20:03:47 player: Sammy Sosa action: grand slam ... 

二つの連続YAMLの設定項目を書かれた文書に相当YAML。

3、!! YAMLメイク使用!!力変換タイプ:

string:
    - !!str 54321 - !!str true 

文字列の数や強さにブール同等。もちろん、多くのようなトランジションの種類を、許可します:

--- !!set
- Mark McGwire: 65
- Sammy Sosa: 63
- Sammy Sosa: 63
- Ken Griffy: 58

セット、単純に理解するために、変換の内容が配列されている解析:[{ケンGriffy = 58}、{マーク・マグワイア= 65}、{サミーソーサ= 63}]、サミーソーサを除去重複。

4、>文字列の折改行、|予約された改行、二つのシンボルのような頻繁に使用されるYAML文字列を表します:

accomplishment: >
 Mark set a major league
 home run record in 1998.
stats: |
 65 Home Runs
 0.278 Batting Average

そして、結果は次のとおりです。

stats=65 Home Runs
 0.278 Batting Average,

その|次のように記号は、改行文字、および成果の結果を保持します:

accomplishment=Mark set a major league home run record in 1998.

改行はすぐ空間に変換し、ノートへのポイントは、各ラインのテキストの前にスペースがなければならないということです。
|記号はYAMLで、共通のHTMLフラグメントを構成するために使用されます。

phraseTemplate: |
  <p style="color: red"> some template ${msg} </p> 

5参照。重複した内容は、例えば、アンカー*参照を完了するために使用される完全な&YAMLアンカーポイントの定義に使用することができます。

hr:
- Mark McGwire
- &SS Sammy Sosa
rbi:
- *SS 
- Ken Griffey

これは、使用して&SS時間で見ることができるアンカーの使用を完了したRBIに* SSを使用して、SSという名前のサミー・ソーサ、とアンカー(参照)を設定し、その結果は次のとおりです。

{rbi=[Sammy Sosa, Ken Griffey], hr=[Mark McGwire, Sammy Sosa]}

我々はまた、定義することができます。

SS: &SS Sammy Sosa
hr:
 - Mark McGwire
 - *SS
rbi:
 - *SS 
 - Ken Griffey

等さらに、アンカーは、より複雑なコンテンツを定義することができ、;&SSサミーソーサ:アンカーは、直接書き込まないように、別々に定義することができないことに注意してください

default: &default
    - Mark McGwire - Sammy Sosa hr: *default 

同じ行に*デフォルトの書き込み:そして、時間と同等には、デフォルト、注意を払う、時間の配列を引用しました。

図6は、コンテンツをマージします。メインアンカーと組み合わせて使用​​する、アンカーは、オブジェクトのコンテンツに直接組み込まれてもよいです。例を見てください:

merge:
  - &CENTER { x: 1, y: 2 } - &LEFT { x: 0, y: 2 } - &BIG { r: 10 } - &SMALL { r: 1 } sample1: <<: *CENTER r: 10 sample2: << : [ *CENTER, *BIG ] other: haha sample3: << : [ *CENTER, *BIG ] r: 100 

マージでは、我々はサンプルで、それぞれ、4つのアンカーポイントを定義します。
SAMPLE1において、<<:* CENTER平均基準{X 1、Y:2 }、 及びSAMPLE1に組み込まれ、次いで合わせた結果である:SAMPLE1 = {R = 10、 Y = 2、X = 1}

SAMPLE2において、<< [* CENTER、* BIG]平均関節参照{X 1、Y:2}及び{R 10}、およびSAMPLE2に組み込まれ、次いで合わせた結果である:サンプル2 = {他=母、X = 1、Y = 2、R = 10}

SAMPLE3、* CENTERの導入、* BIGは、また、R使用:カバー100に内蔵されたR 10、そうSAMPLE3値:SAMPLE3 = {R = 100、Y = 2、X = 1}

合併により、当社は、合併が異なるサブ構成で呼び出すことができ、同じ基本的な構成は、抽出された、コンフィギュレーションになります。

上記の例によりSnakeyamlによって試験しました

詳細はこちら

あなたはYAMLについてもっと知りたい場合は、(参照により本明細書)を学ぶことができます:
1、YAML1.2仕様:http://yaml.org/spec/1.2/spec.pdf
2、JS-オンラインYAMLの例:HTTP:/ /nodeca.github.io/js-yaml/

 

おすすめ

転載: www.cnblogs.com/jinanxiaolaohu/p/12082220.html