แผ่นโกงรูปแบบ 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 พยายามอนุมานประเภท (ตัวเลข บูลีน) จึงมีกฎเฉพาะเมื่อคุณ ต้อง ใช้เครื่องหมายคำพูด

รายการ "ต้องอ้างอิง"

คุณต้องล้อมสตริงด้วยเครื่องหมายคำพูดคู่ "" หาก:

  1. ดูเหมือนตัวเลขหรือบูลีน: หากคุณต้องการสตริง "123" หรือ "true" ให้ใส่เครื่องหมายคำพูด มิฉะนั้น มันจะกลายเป็นตัวเลข 123 และบูลีน 'จริง'
  1. ประกอบด้วยตัวคั่น: หากสตริงของคุณมีเครื่องหมายจุลภาค , (หรือตัวคั่นที่ใช้งานอยู่) ให้ใส่เครื่องหมายคำพูด
  1. มีขอบช่องว่าง: ช่องว่างนำหน้าหรือต่อท้ายต้องมีเครื่องหมายคำพูด
  1. ประกอบด้วยอักขระพิเศษ: อักขระเช่น :, ", \, [, ], {, }
  1. ว่างเปล่า: สตริงว่างจะแสดงเป็น ""

ตัวอย่าง:

ลำดับการหลบหนี

ทำให้มันง่าย 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 เป็นรูปแบบที่ให้รางวัลความแม่นยำ อาจต้องใช้เวลาสักครู่เพื่อทำความคุ้นเคยกับการนับรายการอาเรย์ของคุณ แต่ผลตอบแทนจากความสามารถในการอ่านและขนาดไฟล์นั้นคุ้มค่ากับความพยายาม ขอให้มีความสุขในการเขียนโค้ด!