YAML-キャラクターストリーム

YAMLでは、次のようにさまざまな文字ストリームに遭遇します-

  • Directives
  • ドキュメント境界マーカー
  • Documents
  • 完全なストリーム

この章では、それらについて詳しく説明します。

指令

ディレクティブは、YAMLプロセッサーで使用される基本的な命令です。ディレクティブは、シリアル化ツリーに反映されないコメントなどのプレゼンテーションの詳細です。YAMLでは、プライベートディレクティブを定義する方法はありません。このセクションでは、さまざまなタイプのディレクティブと関連する例について説明します。

予約済みディレクティブ

次の例に示すように、予約済みディレクティブは3つのハイフン文字(---)で初期化されます。予約されたディレクティブは、JSONの特定の値に変換されます。

%YAML 1.1
--- !!str
"foo"

YAMLディレクティブ

YAMLディレクティブはデフォルトのディレクティブです。JSONで変換された場合、フェッチされる値には、先行文字と終了文字にスラッシュ文字が含まれます。

%YAML 1.1
---
!!str "foo"

ドキュメント境界マーカー

YAMLはこれらのマーカーを使用して、複数のドキュメントを1つのストリームに含めることができます。これらのマーカーは、YAMLドキュメントの構造を伝えるために特別に使用されます。「---」で始まる行は、新しいドキュメントを開始するために使用されることに注意してください。

次のコードは、これについて例を挙げて説明しています-

%YAML 1.1
---
!!str "foo"
%YAML 1.1
---
!!str "bar"
%YAML 1.1
---
!!str "baz"

ドキュメント

YAMLドキュメントは、単一のルートノードとして提示される単一のネイティブデータ構造と見なされます。ディレクティブ、コメント、インデント、スタイルなどのYAMLドキュメントのプレゼンテーションの詳細は、それらに含まれるコンテンツとは見なされません。

YAMLで使用されるドキュメントには2つのタイプがあります。これらはこのセクションで説明されています-

明示的なドキュメント

ドキュメント開始マーカーで始まり、ルートノードが表示されます。YAML明示宣言の例を以下に示します-

---

some: yaml

...

これには、特定の例では「---」および「…」である明示的な開始マーカーと終了マーカーが含まれています。指定されたYAMLをJSON形式に変換すると、次のような出力が得られます-

{
   "some": "yaml"
}

暗黙のドキュメント

これらのドキュメントは、ドキュメント開始マーカーで始まりません。以下のコードを確認してください-

fruits:
   - Apple
   - Orange
   - Pineapple
   - Mango

これらの値をJSON形式に変換すると、次のように単純なJSONオブジェクトとして出力が得られます。

{
   "fruits": [
      "Apple",
      "Orange",
      "Pineapple",
      "Mango"
   ]
}

完全なストリーム

YAMLには、文字ストリームと呼ばれる一連のバイトが含まれています。ストリームは、文字エンコードを示すバイト順序を含むプレフィックスで始まります。完全なストリームは、文字エンコードを含むプレフィックスで始まり、その後にコメントが続きます。

完全なストリーム(文字ストリーム)の例を以下に示します-

%YAML 1.1
---
!!str "Text content\n"