- docx (รูปแบบ Microsoft Word);
- pdf (รูปแบบ Adobe);
- mobi (ใช้กันทั่วไปในอุปกรณ์ Amazon Kindle);
- และอีกมากมาย (ePub, djvu, fb2 ฯลฯ)
เจสัน
สัญกรณ์วัตถุ JavaScript คุณรู้เรื่องรูปแบบนี้มาบ้างแล้ว! เราได้พูดคุยเกี่ยวกับเรื่องนี้ในบทเรียนนี้และเราได้กล่าวถึงการทำให้เป็นอันดับเป็น JSON ที่นี่ มันมีชื่อด้วยเหตุผล วัตถุ Java ที่แปลงเป็น JSON มีลักษณะเหมือนวัตถุใน JavaScript ทุกประการ คุณไม่จำเป็นต้องรู้ JavaScript เพื่อทำความเข้าใจวัตถุของเรา:
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
เราไม่จำกัดเพียงการส่งอ็อบเจกต์เดียว รูปแบบ JSON ยังสามารถแสดงอาร์เรย์ของวัตถุ:
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
เนื่องจาก JSON เป็นตัวแทนของวัตถุ JavaScript จึงสนับสนุนรูปแบบข้อมูล JavaScript ต่อไปนี้:
- สตริง;
- ตัวเลข;
- วัตถุ;
- อาร์เรย์;
- บูลีน (จริงและเท็จ);
- โมฆะ.
-
รูปแบบที่มนุษย์อ่านได้ นี่เป็นข้อได้เปรียบที่ชัดเจนหากผู้ใช้ปลายทางของคุณเป็นมนุษย์ ตัวอย่างเช่น สมมติว่าเซิร์ฟเวอร์ของคุณมีฐานข้อมูลพร้อมตารางเที่ยวบิน ลูกค้าที่เป็นมนุษย์นั่งอยู่ที่คอมพิวเตอร์ที่บ้าน ขอข้อมูลจากฐานข้อมูลนี้โดยใช้เว็บแอปพลิเคชัน เนื่องจากคุณต้องให้ข้อมูลในรูปแบบที่เขาเข้าใจได้ JSON จึงเป็นโซลูชันที่ยอดเยี่ยม
-
ความเรียบง่าย มันง่ายมาก :) ด้านบน เราได้ยกตัวอย่างไฟล์ JSON สองไฟล์ และแม้ว่าคุณจะไม่เคยได้ยินเกี่ยวกับ JavaScript (ไม่ต้องพูดถึงวัตถุ JavaScript) คุณก็สามารถเข้าใจประเภทของวัตถุที่อธิบายไว้ได้อย่างง่ายดาย
เอกสารประกอบ JSON ทั้งหมดประกอบด้วยหน้าเว็บที่มีรูปภาพสองสามภาพ -
การใช้งานอย่างแพร่หลาย JavaScript เป็นภาษาส่วนหน้าที่โดดเด่นและมีข้อกำหนดของตนเอง การใช้ JSON เป็นสิ่งจำเป็น ดังนั้น บริการเว็บจำนวนมากจึงใช้ JSON เป็นรูปแบบการแลกเปลี่ยนข้อมูล IDE สมัยใหม่ทุกอันรองรับรูปแบบ JSON (รวมถึง IntelliJ IDEA) มีการเขียนไลบรารีมากมายสำหรับภาษาโปรแกรมทุกประเภทเพื่อให้สามารถทำงานกับ JSON ได้
ย.ม
ในขั้นต้น YAML ย่อมาจาก "Yet Another Markup Language" เมื่อมันเริ่มต้น มันถูกกำหนดให้เป็นคู่แข่งของ XML เมื่อเวลาผ่านไป YAML มีความหมายว่า "YAML ไม่ใช่ภาษามาร์กอัป" มันคืออะไรกันแน่? ลองจินตนาการว่าเราต้องสร้างคลาส 3 คลาสเพื่อเป็นตัวแทนของตัวละครในเกมคอมพิวเตอร์: Warrior, Mage และ Thief พวกเขาจะมีลักษณะดังต่อไปนี้: ความแข็งแกร่ง ความว่องไว ความอดทน ชุดของอาวุธ ไฟล์ YAML ที่อธิบายชั้นเรียนของเราจะมีลักษณะดังนี้:
classes:
class-1:
title: Warrior
power: 8
agility: 4
stamina: 7
weapons:
- sword
- spear
class-2:
title: Mage
power: 5
agility: 7
stamina: 5
weapons:
- magic staff
class-3:
title: Thief
power: 6
agility: 6
stamina: 5
weapons:
- dagger
- poison
ไฟล์ YAML มีโครงสร้างแบบต้นไม้: องค์ประกอบบางอย่างซ้อนอยู่ในองค์ประกอบอื่นๆ เราสามารถควบคุมการซ้อนโดยใช้ช่องว่างจำนวนหนึ่งซึ่งเราใช้เพื่อแสดงแต่ละระดับ ข้อดีของรูปแบบ YAML คืออะไร
-
มนุษย์อ่านได้ อีกครั้ง แม้จะเห็นไฟล์ YAML โดยไม่มีคำอธิบาย คุณก็สามารถเข้าใจวัตถุที่อธิบายได้อย่างง่ายดาย YAML นั้นมนุษย์สามารถอ่านได้โดยที่เว็บไซต์yaml.orgเป็นไฟล์ YAML ธรรมดา :)
-
ความกะทัดรัด โครงสร้างไฟล์ถูกสร้างขึ้นโดยใช้ช่องว่าง: ไม่จำเป็นต้องใช้วงเล็บหรือเครื่องหมายอัญประกาศ
-
รองรับโครงสร้างข้อมูลดั้งเดิมสำหรับภาษาโปรแกรม ข้อดีอย่างมากของ YAML เหนือ JSON และรูปแบบอื่นๆ คือ รองรับโครงสร้างข้อมูลที่หลากหลาย พวกเขารวมถึง:
-
!!map
ชุดของคู่คีย์-ค่าที่ไม่มีลำดับซึ่งไม่สามารถซ้ำกันได้ -
!!omap
ลำดับของคู่คีย์-ค่าที่ไม่สามารถซ้ำกันได้ -
!!pairs:
ลำดับของคู่คีย์-ค่าที่สามารถมีซ้ำได้ - !!set
ลำดับที่ไม่มีลำดับของค่าที่ไม่เท่ากัน - !!seq
ลำดับของค่าโดยพลการ;
คุณจะรู้จักโครงสร้างเหล่านี้บางส่วนจาก Java! :) ซึ่งหมายความว่าโครงสร้างข้อมูลต่างๆ จากภาษาการเขียนโปรแกรมสามารถจัดลำดับเป็น YAML ได้
-
-
ความสามารถในการใช้สมอเรือและนามแฝง
เครื่องหมายเหล่านี้ทำให้คุณสามารถระบุองค์ประกอบบางอย่างในไฟล์ YAML แล้วอ้างอิงถึงองค์ประกอบในส่วนที่เหลือของไฟล์หากเกิดขึ้นซ้ำๆ สมอถูกสร้างขึ้นโดยใช้สัญลักษณ์&และสร้างนามแฝงโดยใช้*
สมมติว่าเรามีไฟล์ที่อธิบายถึงหนังสือของลีโอ ตอลสตอย เพื่อหลีกเลี่ยงการเขียนชื่อผู้แต่งสำหรับหนังสือแต่ละเล่ม เราเพียงสร้าง leo anchor และอ้างถึงโดยใช้นามแฝงเมื่อเราต้องการ:
books: book-1: title: War and Peace author: &leo Leo Tolstoy year: 1869 book-2: title: Anna Karenina author: *leo year: 1873 book-3: title: Family Happiness author: *leo year: 1859
เมื่อแยกวิเคราะห์ไฟล์นี้ ค่า "Leo Tolstoy" จะถูกแทนที่ในตำแหน่งที่ถูกต้องที่เรามีชื่อแทน
- YAML สามารถฝังข้อมูลในรูปแบบอื่นได้ ตัวอย่างเช่น JSON:
books: [ { "title": "War and Peace", "author": "Leo Tolstoy", "year": 1869 }, { "title": "Anna Karenina", "author": "Leo Tolstoy", "year": 1873 }, { "title": "Family Happiness", "author": "Leo Tolstoy", "year": 1859 } ]
รูปแบบการทำให้เป็นอนุกรมอื่นๆ
XML
รูปแบบนี้อิงตามแผนผังแท็ก
<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
แต่ละองค์ประกอบประกอบด้วยแท็กเปิดและแท็กปิด (<> และ </>) แต่ละองค์ประกอบสามารถมีองค์ประกอบที่ซ้อนกันได้ XML เป็นรูปแบบทั่วไปที่ดีพอๆ กับ JSON และ YAML (หากเรากำลังพูดถึงโครงการจริง) เรามีบทเรียนแยกต่างหากเกี่ยวกับ XML .
BSON (ไบนารี JSON)
ตามชื่อของมัน BSON คล้ายกับ JSON มาก แต่มนุษย์ไม่สามารถอ่านได้และใช้ข้อมูลไบนารี ด้วยเหตุนี้ จึงเหมาะสำหรับการจัดเก็บและถ่ายโอนรูปภาพและไฟล์แนบอื่นๆ นอกจากนี้ BSON ยังรองรับข้อมูลบางประเภทที่ไม่มีใน JSON ตัวอย่างเช่น ไฟล์ BSON สามารถรวมวันที่ (ในรูปแบบมิลลิวินาที) หรือแม้แต่รหัส JavaScript ฐานข้อมูล MongoDB NoSQL ยอดนิยมเก็บข้อมูลในรูปแบบ BSONโปรโตคอลตามตำแหน่ง
ในบางสถานการณ์ เราจำเป็นต้องลดปริมาณข้อมูลที่ส่งลงอย่างมาก (เช่น หากเรามีข้อมูลจำนวนมากและจำเป็นต้องลดการโหลด) ในสถานการณ์นี้ เราสามารถใช้โปรโตคอลตามตำแหน่งได้ นั่นคือ ส่งค่าพารามิเตอร์โดยไม่ใช้ชื่อของพารามิเตอร์เอง
"Leo Tolstoy" | "Anna Karenina" | 1873
ข้อมูลในรูปแบบนี้ใช้พื้นที่น้อยกว่าไฟล์ JSON แบบเต็มหลายเท่า แน่นอนว่ามีรูปแบบซีเรียลไลเซชันอื่นๆ อีก แต่คุณไม่จำเป็นต้องรู้ทั้งหมดในตอนนี้ :) จะเป็นการดีถ้าคุณคุ้นเคยกับรูปแบบมาตรฐานอุตสาหกรรมปัจจุบันเมื่อพัฒนาแอปพลิเคชัน และจดจำข้อดีและความแตกต่างของรูปแบบดังกล่าว อื่น. และด้วยเหตุนี้บทเรียนของเราก็จบลง :) วันนี้อย่าลืมแก้งานสองอย่าง! จนกว่าจะถึงครั้งต่อไป! :)
GO TO FULL VERSION