แผ่นโกงรูปแบบ TOON
หากคุณเคยรู้สึกว่า JSON นั้นละเอียดเกินไป (วงเล็บปีกกาทั้งหมด!) แต่ YAML นั้น "มหัศจรรย์" เกินไปและคาดเดาไม่ได้ คุณอาจตกหลุมรัก TOON รูปแบบนี้มีความสมดุลระหว่างความสามารถในการอ่านของมนุษย์และความเร็วในการแยกวิเคราะห์ของเครื่อง ได้รับการออกแบบให้มีความหนาแน่น ชัดเจน และรวดเร็วอย่างไม่น่าเชื่อในการแยกวิเคราะห์
ไม่ว่าคุณจะย้ายข้อมูลหรือเพียงแค่พยายามแก้ไขจุดบกพร่องของไฟล์การกำหนดค่า เอกสารสรุปนี้ครอบคลุมไวยากรณ์ที่จำเป็นที่คุณต้องรู้
ปรัชญา: เสียงรบกวนน้อยลง ข้อมูลมากขึ้น
สิ่งแรกที่คุณจะสังเกตได้คือ TOON ดูเหมือน YAML มาก แต่มีพฤติกรรมเหมือนกับ JSON อย่างเคร่งครัด โดยจะทิ้งเครื่องหมายปีกกาเปิดและปิดเพื่อเป็นการเยื้องและขึ้นบรรทัดใหม่ ทำให้ข้อมูลของคุณดูสะอาดตายิ่งขึ้นในทันที
วัตถุและการทำรัง
ใน JSON คุณคุ้นเคยกับการใส่ทุกอย่างด้วยเครื่องหมายปีกกา ใน TOON โครงสร้างจะส่อให้เห็นโดยการเยื้อง
เจสัน:
- "โครงการ": {
"ข้อมูลเมตา": {
"ชื่อ": "อัลฟ่า-เซนทอรี",
"สถานะ": "ใช้งานอยู่"
- "เหตุการณ์สำคัญ": [
- "เฟส": "การออกแบบ",
"ลำดับความสำคัญ": 1
- - "เฟส": "ทดสอบ",
"ลำดับความสำคัญ": 2
- - - - -
ตูน:
โครงการ:
ข้อมูลเมตา:
ชื่อ:อัลฟ่า-เซนทอรี
สถานะ: ใช้งานอยู่
เหตุการณ์สำคัญ [2] {เฟส, ลำดับความสำคัญ}:
การออกแบบ1
การทดสอบ2
-
โปรดสังเกตว่าคีย์ไม่จำเป็นต้องมีเครื่องหมายคำพูด เว้นแต่จะมีอักขระพิเศษ และลำดับชั้นก็มองเห็นได้ชัดเจน
พลังของอาร์เรย์
นี่คือจุดที่ TOON แตกต่างจากรูปแบบอื่นๆ จริงๆ TOON ต้องการให้คุณประกาศ ความยาว ของอาร์เรย์ในคีย์นั้นเอง สิ่งนี้อาจดูแปลกในตอนแรก แต่ช่วยให้ parser สามารถจัดสรรหน่วยความจำล่วงหน้าได้ ทำให้รวดเร็วมาก
อาร์เรย์ดั้งเดิม
สำหรับรายการสตริงหรือตัวเลขอย่างง่าย TOON จะใช้ไวยากรณ์ที่กะทัดรัดและคั่นด้วยเครื่องหมายจุลภาค
ไวยากรณ์:
คีย์ [ความยาว]: item1, item2, item3
-
หากคุณมีอาร์เรย์รูท (ไฟล์ทั้งหมดเป็นเพียงรายการ) จะมีลักษณะดังนี้:
อาร์เรย์แบบตาราง (คุณลักษณะนักฆ่า)
นี่คือคุณสมบัติที่มักจะชนะใจนักพัฒนา หากคุณมีอาร์เรย์ของอ็อบเจ็กต์ที่ทั้งหมดใช้คีย์เดียวกัน (เช่น แถวในฐานข้อมูล) TOON จะให้คุณกำหนดสคีมา once ในส่วนหัว จากนั้นเพียงแสดงรายการค่าต่างๆ วิธีนี้จะลบความซ้ำซ้อนจำนวนมหาศาลที่พบใน JSON
ไวยากรณ์:
คีย์ [แถว] {col1,col2}:
-
เจสัน:
- "สินค้าคงคลัง": [
- "sku": "KB-99",
"จำนวน": 50,
"ทางเดิน": 4,
"เรียงลำดับใหม่": เท็จ
- - "sku": "MS-12",
"จำนวน": 12,
"ทางเดิน": 7,
"เรียงลำดับใหม่": จริง
- - "sku": "MN-44",
"จำนวน": 8,
"ทางเดิน": 2,
"เรียงลำดับใหม่": จริง
- - - -
ตูน:
สินค้าคงคลัง[3]{sku,จำนวน,ทางเดิน,สั่งซื้อใหม่}:
KB-99,50,4,เท็จ
MS-12,12,7 จริง
MN-44,8,2,จริง
-
วิธีการ "CSV-inside-YAML" นี้ทำให้ชุดข้อมูลขนาดใหญ่สามารถอ่านได้และมีขนาดกะทัดรัดอย่างไม่น่าเชื่อ
อาร์เรย์แบบผสมและแบบซ้อน
บางครั้งข้อมูลไม่สม่ำเสมอ หากอาร์เรย์ของคุณมีข้อมูลประเภทต่างๆ (ตัวเลขผสมกับออบเจ็กต์) หรือหากมีออบเจ็กต์ที่ซ้อนกันที่ซับซ้อน TOON จะย้อนกลับไปที่ไวยากรณ์สไตล์สัญลักษณ์แสดงหัวข้อย่อยโดยใช้ยัติภังค์
คุณสามารถมีอาร์เรย์ภายในอาร์เรย์ได้ โปรดสังเกตว่าอาร์เรย์ภายในประกาศความยาวของมันอย่างไร:
การอ้างอิง: เมื่อใดควรใช้
หนึ่งในสิ่งที่ดีที่สุดเกี่ยวกับ TOON ก็คือคุณแทบไม่ต้องใช้คำพูด คุณสามารถเขียนว่า สวัสดี 世界 😏 โดยไม่ต้องล้อมด้วย "" ได้ อย่างไรก็ตาม เนื่องจาก TOON พยายามอนุมานประเภท (ตัวเลข บูลีน) จึงมีกฎเฉพาะเมื่อคุณ ต้อง ใช้เครื่องหมายคำพูด
รายการ "ต้องอ้างอิง"
คุณต้องล้อมสตริงด้วยเครื่องหมายคำพูดคู่ "" หาก:
- ดูเหมือนตัวเลขหรือบูลีน: หากคุณต้องการสตริง
"123"หรือ"true"ให้ใส่เครื่องหมายคำพูด มิฉะนั้น มันจะกลายเป็นตัวเลข123และบูลีน 'จริง'
- ประกอบด้วยตัวคั่น: หากสตริงของคุณมีเครื่องหมายจุลภาค
,(หรือตัวคั่นที่ใช้งานอยู่) ให้ใส่เครื่องหมายคำพูด
- มีขอบช่องว่าง: ช่องว่างนำหน้าหรือต่อท้ายต้องมีเครื่องหมายคำพูด
- ประกอบด้วยอักขระพิเศษ: อักขระเช่น
:,",\,[,],{,}
- ว่างเปล่า: สตริงว่างจะแสดงเป็น
""
ตัวอย่าง:
ลำดับการหลบหนี
ทำให้มันง่าย TOON รู้จักลำดับการหลีกเลี่ยงห้าลำดับภายในสตริงเท่านั้น สิ่งอื่นใดไม่ถูกต้อง
\\(แบ็กสแลช)
\"(เครื่องหมายคำพูดคู่)
\n(ขึ้นบรรทัดใหม่)
\r(การคืนรถ)
\t(แท็บ)
ส่วนหัวและตัวคั่นขั้นสูง
จะเกิดอะไรขึ้นถ้าข้อมูลของคุณเต็มไปด้วยเครื่องหมายจุลภาค? คุณไม่ต้องการเสนอราคาทุกฟิลด์ TOON ให้คุณเปลี่ยนตัวคั่นในส่วนหัวของอาร์เรย์
คุณสามารถใช้ Tab หรือ Pipe (|) ได้โดยวางไว้ในวงเล็บหรือวงเล็บปีกกา
ตัวอย่างตัวคั่นไปป์:
ด้วยการเพิ่ม | ในส่วนหัว parser จะรู้ว่าจะต้องมองหาไปป์แทนเครื่องหมายจุลภาค เพื่อรักษาไวยากรณ์ของคุณให้สะอาด
กุญแจพับ
หากคุณมีการซ้อนแบบลึกแต่มีข้อมูลเพียงเส้นทางเดียว คุณไม่จำเป็นต้องเยื้องห้าครั้ง คุณสามารถใช้เครื่องหมายจุด (การพับกุญแจ) เพื่อทำให้โครงสร้างของคุณเรียบขึ้น
การทำรังแบบมาตรฐาน:
ผู้ใช้:
โปรไฟล์:
การตั้งค่า:
การแจ้งเตือน:
อีเมล์: จริง
SMS: เท็จ
-
พับ(น้ำยาทำความสะอาด):
user.profile.settings.notifications:
อีเมล์: จริง
SMS: เท็จ
-
การอ้างอิงประเภทด่วน
TOON แมปกับประเภท JSON โดยตรง แต่จะจัดการ Edge Case เฉพาะ JavaScript อย่างงดงามเพื่อให้แน่ใจว่าเอาต์พุตถูกต้อง
- ตัวเลข: จัดเก็บเป็นทศนิยมตามรูปแบบบัญญัติ
1.0กลายเป็น1
- Infinity / NaN: สิ่งเหล่านี้กลายเป็น
null(เนื่องจาก JSON ไม่รองรับ)
- วันที่: แปลงเป็นสตริง ISO ที่ยกมา
- ไม่ได้กำหนด/ฟังก์ชัน: แปลงเป็น
null
- วัตถุว่าง: แสดงว่าไม่มีสิ่งใด (เอาต์พุตว่างเปล่า)
- อาร์เรย์ว่าง: แสดงเป็น
key[0]:
TOON เป็นรูปแบบที่ให้รางวัลความแม่นยำ อาจต้องใช้เวลาสักครู่เพื่อทำความคุ้นเคยกับการนับรายการอาเรย์ของคุณ แต่ผลตอบแทนจากความสามารถในการอ่านและขนาดไฟล์นั้นคุ้มค่ากับความพยายาม ขอให้มีความสุขในการเขียนโค้ด!