- docx (รูปแบบ Microsoft Word);
- pdf (รูปแบบ Adobe);
- mobi (มักใช้ในอุปกรณ์ Amazon Kindle);
- และอีกมากมาย (ePub, djvu, fb2...)
เจสัน
สัญกรณ์วัตถุ JavaScript คุณคุ้นเคยกับเขาแล้วนิดหน่อย! เราได้พูดคุยเกี่ยวกับเรื่องนี้ในการบรรยายครั้งนี้และเราดูที่การทำให้เป็นอนุกรมใน JSON ที่นี่ มันได้ชื่อมาด้วยเหตุผล อ็อบเจ็กต์ Java ที่แปลงเป็น JSON จริงๆ แล้วมีลักษณะเหมือนกับอ็อบเจ็กต์ JavaScript ทุกประการ คุณไม่จำเป็นต้องรู้ JavaScript เพื่อเข้าใจความหมายของวัตถุของเรา:{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
}
ไม่จำเป็นต้องผ่านวัตถุชิ้นเดียว JSON ยังสามารถประกอบด้วยอาร์เรย์ของอ็อบเจ็กต์ได้:
[
{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
},
{
"title": "Бесы",
"author": "Федор Достоевский",
"year": 1872
},
{
"title": "Чайка",
"author": "Антон Чехов",
"year": 1896
}
]
เนื่องจาก JSON เป็นออบเจ็กต์ JavaScript จึงรองรับรูปแบบข้อมูล JavaScript ต่อไปนี้:
- สตริง;
- ตัวเลข (ตัวเลข);
- วัตถุ (วัตถุ);
- อาร์เรย์ (อาร์เรย์);
- ค่าบูลีน (จริงและเท็จ);
- โมฆะ.
-
รูปแบบที่มนุษย์สามารถอ่านได้ นี่เป็นข้อได้เปรียบที่ชัดเจนหากผู้ใช้ปลายทางของคุณเป็นมนุษย์ ตัวอย่างเช่น เซิร์ฟเวอร์ของคุณจัดเก็บฐานข้อมูลพร้อมตารางเที่ยวบิน ลูกค้าที่เป็นมนุษย์ร้องขอข้อมูลจากฐานข้อมูลนี้โดยใช้เว็บแอปพลิเคชันขณะนั่งอยู่ที่บ้านที่คอมพิวเตอร์ เนื่องจากคุณจำเป็นต้องให้ข้อมูลในรูปแบบที่เขาเข้าใจได้ JSON จึงเป็นโซลูชันที่ยอดเยี่ยม
-
ความเรียบง่าย คุณสามารถพูดได้ว่ามันเป็นระดับประถมศึกษา :) ด้านบนนี้เราได้ยกตัวอย่างไฟล์ JSON สองไฟล์ และแม้ว่าคุณจะไม่เคยได้ยินเกี่ยวกับการมีอยู่ของ JavaScript มาก่อน (นับประสาอะไรกับอ็อบเจ็กต์ของมัน) คุณก็สามารถเข้าใจได้อย่างง่ายดายว่าอ็อบเจ็กต์ประเภทใดที่อธิบายไว้ที่นั่น
เอกสาร JSON ทั้งหมดเป็นหน้าเว็บ เดียว ที่มีรูปภาพสองสามรูป -
แพร่หลาย. JavaScript เป็นภาษาส่วนหน้าที่โดดเด่นและกำหนดเงื่อนไขของมัน การใช้ JSON เป็นสิ่งจำเป็น ดังนั้นบริการเว็บจำนวนมากจึงใช้ JSON เป็นรูปแบบในการแลกเปลี่ยนข้อมูล IDE สมัยใหม่ทุกตัวรองรับรูปแบบ JSON (รวมถึง Intellij IDEA) มีการเขียนไลบรารีจำนวนมากเพื่อทำงานกับ JSON สำหรับภาษาการเขียนโปรแกรมที่เป็นไปได้ทั้งหมด
YAML
ในช่วงเริ่มต้นของการดำรงอยู่ มันย่อมาจาก Yet Another Markup Language - "ภาษามาร์กอัปอื่น" ในขณะนั้นถูกวางตำแหน่งให้เป็นคู่แข่งของ XML เมื่อเวลาผ่านไป คำนี้ย่อมาจาก “YAML Ain't Markup Language” (“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 ได้
-
-
ความสามารถในการใช้สมอและนามแฝง
การแปลคำว่า "anchor" และ "alias" - "anchor" และ "pseudonym" โดยหลักการแล้ว YAML อธิบายสาระสำคัญของคำเหล่านี้ได้ค่อนข้างแม่นยำ
ช่วยให้คุณสามารถระบุองค์ประกอบในไฟล์ yaml และอ้างอิงถึงองค์ประกอบนั้นในไฟล์ที่เหลือหากเกิดขึ้นซ้ำๆ Anchor ถูกสร้างขึ้นโดยใช้สัญลักษณ์
&
และนามแฝงถูกสร้างขึ้นโดย*
ใช้สมมติว่าเรามีไฟล์พร้อมคำอธิบายหนังสือของลีโอ ตอลสตอย เพื่อหลีกเลี่ยงการเขียนชื่อผู้เขียนด้วยตนเองในแต่ละครั้ง เราจะสร้างจุดยึด "leo" และอ้างอิงโดยใช้นามแฝงเมื่อเราต้องการ:
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
เมื่อเราอ่านไฟล์นี้ด้วย parser ค่า "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)
ตามชื่อของมัน มันคล้ายกับ JSON มาก แต่ไม่สามารถอ่านได้โดยมนุษย์และดำเนินการกับข้อมูลในรูปแบบไบนารี ทำให้สะดวกมากสำหรับการจัดเก็บและถ่ายโอนภาพและไฟล์แนบอื่นๆ นอกจากนี้ BSON ยังรองรับข้อมูลบางประเภทที่ไม่มีใน JSON ตัวอย่างเช่น คุณสามารถเขียนวันที่ (ในรูปแบบมิลลิวินาที) หรือแม้แต่โค้ด JavaScript บางส่วนลงในไฟล์ BSON MongoDB ฐานข้อมูล NoSQL ยอดนิยมจัดเก็บข้อมูลในรูปแบบ BSONโปรโตคอลตามตำแหน่ง
ในบางสถานการณ์ เราจำเป็นต้องลดปริมาณข้อมูลที่ถ่ายโอนลงอย่างมาก (เช่น หากมีข้อมูลจำนวนมากและเราจำเป็นต้องลดภาระ) ในสถานการณ์นี้ เราสามารถใช้โปรโตคอลตามตำแหน่งนั่นคือส่งค่าพารามิเตอร์โดยไม่มีชื่อของพารามิเตอร์เอง"Leo Tolstoy" | "Anna Karenina" | 1873
ข้อมูลในรูปแบบนี้ใช้พื้นที่น้อยกว่าไฟล์ JSON ที่มีคุณสมบัติครบถ้วนมาก แน่นอนว่ายังมีรูปแบบการทำให้เป็นอนุกรมอื่นๆ อยู่ แต่คุณไม่จำเป็นต้องรู้ทั้งหมดในตอนนี้ :) เป็นการดีที่จะทำความคุ้นเคยกับรูปแบบที่เป็นมาตรฐานอุตสาหกรรมสำหรับการพัฒนาแอปพลิเคชันในปัจจุบัน และจดจำข้อดีและความแตกต่างระหว่างกัน . และการบรรยายของเราสิ้นสุดลงแล้ว :) อย่าลืมแก้ปัญหาสองสามข้อในวันนี้! แล้วพบกันอีก! :)
GO TO FULL VERSION