YAML - รูปแบบการไหล
รูปแบบการไหลใน YAML สามารถคิดว่าเป็นส่วนขยายตามธรรมชาติของ JSON เพื่อให้ครอบคลุมบรรทัดเนื้อหาแบบพับเพื่อให้อ่านได้ง่ายขึ้นซึ่งใช้จุดยึดและนามแฝงเพื่อสร้างอินสแตนซ์ออบเจ็กต์ ในบทนี้เราจะมุ่งเน้นไปที่การแสดงกระแสของแนวคิดต่อไปนี้ -
- โหนดนามแฝง
- โหนดว่าง
- รูปแบบ Flow Scalar
- รูปแบบการรวบรวมกระแส
- โหนดการไหล
ตัวอย่างของโหนดนามแฝงแสดงไว้ด้านล่าง -
%YAML 1.2
---
!!map {
? !!str "First occurrence"
: &A !!str "Foo",
? !!str "Override anchor"
: &B !!str "Bar",
? !!str "Second occurrence"
: *A,
? !!str "Reuse anchor"
: *B,
}
เอาต์พุต JSON ของโค้ดที่ระบุด้านบนแสดงไว้ด้านล่าง -
{
"First occurrence": "Foo",
"Second occurrence": "Foo",
"Override anchor": "Bar",
"Reuse anchor": "Bar"
}
โหนดที่มีเนื้อหาว่างถือเป็นโหนดว่าง ตัวอย่างต่อไปนี้แสดงสิ่งนี้ -
%YAML 1.2
---
!!map {
? !!str "foo" : !!str "",
? !!str "" : !!str "bar",
}
ผลลัพธ์ของโหนดว่างใน JSON แสดงดังต่อไปนี้ -
{
"": "bar",
"foo": ""
}
รูปแบบสเกลาร์ของโฟลว์ ได้แก่ ประเภทที่ยกมาสองครั้งแบบยกเดียวและแบบธรรมดา ตัวอย่างพื้นฐานสำหรับสิ่งเดียวกันได้รับด้านล่าง -
%YAML 1.2
---
!!map {
? !!str "implicit block key"
: !!seq [
!!map {
? !!str "implicit flow key"
: !!str "value",
}
]
}
ผลลัพธ์ในรูปแบบ JSON สำหรับตัวอย่างที่ระบุข้างต้นแสดงไว้ด้านล่าง -
{
"implicit block key": [
{
"implicit flow key": "value"
}
]
}
คอลเลกชันโฟลว์ใน YAML ซ้อนกับบล็อกคอลเลกชันภายในคอลเลกชันโฟลว์อื่น รายการคอลเลกชันโฟลว์ถูกยกเลิกด้วยcomma (,) ตัวบ่งชี้ ตัวอย่างต่อไปนี้อธิบายบล็อกการรวบรวมโฟลว์โดยละเอียด -
%YAML 1.2
---
!!seq [
!!seq [
!!str "one",
!!str "two",
],
!!seq [
!!str "three",
!!str "four",
],
]
เอาต์พุตสำหรับการรวบรวมโฟลว์ใน JSON แสดงไว้ด้านล่าง -
[
[
"one",
"two"
],
[
"three",
"four"
]
]
รูปแบบโฟลว์เช่น JSON มีตัวบ่งชี้เริ่มต้นและสิ้นสุด รูปแบบการไหลเดียวที่ไม่มีคุณสมบัติคือสเกลาร์ธรรมดา
%YAML 1.2
---
!!seq [
!!seq [ !!str "a", !!str "b" ],
!!map { ? !!str "a" : !!str "b" },
!!str "a",
!!str "b",
!!str "c",]
ผลลัพธ์สำหรับโค้ดที่แสดงด้านบนในรูปแบบ JSON ได้รับด้านล่าง -
[
[
"a",
"b"
],
{
"a": "b"
},
"a",
"b",
"c"
]