YAML は何に使用されますか?
もう 1 つのテキスト データ形式は YAML ( Yet Another Markup Language、後にYAML Ain't Markup Language ) です。これは、ネットワーク経由で送信するためにオブジェクトをシリアル化するために使用されます (XML や JSON がこの方法で使用されるのと同じです)。人間が判読できるため、Docker、Kubernetes、Ansible などの構成ファイルを作成するためにも使用されます。YAML をファイル (構成ファイルなど) に保存する必要がある場合は、2 つのうちの 1 つを使用します。拡張子: .yaml または .yml。
言語の構文
XML では、山かっこ ( <> ) はタグを指定するために使用されます。JSON では、中括弧 ( {} ) を使用します。YAML では改行とインデントが使用されます。
データはキーと値のペアとして保存されます。キーは文字列で、値はさまざまなデータ型 (文字列、数値、true/false、配列など) になります。キーは引用符なしで記述されます。
情報が YAML にどのように保存されるかを見てみましょう。
タイプ | ジャワ | YAML |
---|---|---|
整数 |
|
数: 5
|
分数 |
|
数: 4.3
|
ブール変数 |
|
有効: false
有効: いいえ 有効: オフ * 有効なブール値: true/false、yes/no、on/off。 |
弦 |
|
都市: ニューヨーク
都市: 「ニューヨーク」 都市: 「ニューヨーク」 * 3 つのオプションはすべて同等です。 |
特殊文字を含む文字列 |
|
行: "aaa\nbbb"
|
コード内のコメント |
|
# コメント
|
物体 |
* オブジェクトの構造を確認できるように、オブジェクトのクラスが指定されています。 |
人物:
名前: "デニス" 年齢: 32 ※属性前のインデントに注意してください。すべての属性で同じである必要があります。 |
単純な値のリスト |
|
年齢: [1、3、5、9、78、-5]
年齢: - 1 - 3 - 5 - 9 - 78 - -5 * どちらのオプションも同等です。 |
オブジェクトのリスト |
|
人物:
- 名前:「イアン」 年齢:21歳 - 名前:「マリーナ」 年齢:25歳 - 名前:「オーウェン」 年齢:73歳 |
Java と同様に、リストの要素はリストにすることができます。つまり、オブジェクトを相互にネストすることができます。リストの次の要素を示すハイフンは、親キーに対して水平方向にオフセットすることも、親キーのすぐ下に配置することもできます。重要なことは、すべての要素が同じ形式であるということです。これは、混乱やあいまいなネスト階層を避けるのに役立ちます。
年齢:
- 1 - 3 - 5 - 9 - 78 - -5 |
年齢:
- 1 - 3 - 5 - 9 - 78 - -5 |
テキスト値を操作する場合、さらに 2 つのニュアンスがあります。
-
複数行のテキスト。次のようにテキストを保存できます。
multilineText: "1 行目\n2 行目\n....n 行目"しかし、それを読もうとすると非常に不快になるでしょう。|があります。(パイプ) 記号。テキストを別の方法で記述するために使用できます。
複数行テキスト: |
1 行目
2 行目
....
n 行目2 番目のオプションの方が便利であることに同意するでしょう?
-
長い行。テキストを 1 行に保ちながら、IDE の表示ワークスペースに収まるようにしたい場合は、> (大なり) 記号を使用できます。
singlelineText: >
begin
...
同じ行を続けます
...
endすべてのテキストは 1 行として扱われます。
複数の YAML データ構造を 1 つのファイルに書き込む必要がある場合は、それらを--- (3 つのハイフン)で区切る必要があります。実際には、これが必要になることはほとんどありませんが、この可能性があることを認識しておくことが最善です。
YAMLドキュメントの例
いくつかの Java データ構造 (クラス) と対応するオブジェクトを作成し、そのオブジェクトを YAML として表現してみます。
class Family {
private Date weddingDate;
private Person wife;
private Person husband;
private List<Person> children;
// Getters and setters are omitted
}
class Person {
private final String name;
private final boolean isWoman;
private int age;
public Person(String name, int age, boolean isWoman) {
this.name = name;
this.age = age;
this.isWoman = isWoman;
}
// Getters and setters are omitted
}
public static void main(String[] args) {
Person wife = new Person("Ann", 37, true);
Person husband = new Person("Alex", 40, false);
var children = List.of(
new Person("Iris", 12, true),
new Person("Olivia", 5, true)
);
Date weddingDate = new Date(/* some long */);
Family family = new Family();
family.setWeddingDate(weddingDate);
family.setWife(wife);
family.setHusband(husband);
family.setChildren(children);
}
YAML での有効な表現:
結婚式 日付: 2000-12-03
妻:
名前: アン
年齢: 37 歳
女性: はい
夫:
名前: アレックス
年齢: 40 歳女性: 子供
なし: - 名前: アイリス 年齢: 12 歳 女性: 本当 - 名前: オリビア 年齢: 5 女:本当 ---