- docx (định dạng Microsoft Word);
- pdf (định dạng Adobe);
- mobi (thường được sử dụng trên thiết bị Amazon Kindle);
- và nhiều hơn nữa (ePub, djvu, fb2, v.v.).
JSON
Ký hiệu đối tượng JavaScript. Bạn đã biết một chút về định dạng này! Chúng ta đã nói về nó trong bài học này và chúng ta đã đề cập đến việc tuần tự hóa thành JSON ngay tại đây . Nó có tên của nó cho một lý do. Các đối tượng Java được chuyển đổi thành JSON thực sự giống hệt các đối tượng trong JavaScript. Bạn không cần biết JavaScript để hiểu đối tượng của chúng tôi:{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
Chúng tôi không giới hạn việc gửi một đối tượng. Định dạng JSON cũng có thể đại diện cho một mảng các đối tượng:
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
Vì JSON đại diện cho các đối tượng JavaScript nên nó hỗ trợ các định dạng dữ liệu JavaScript sau:
- dây;
- con số;
- các đối tượng;
- mảng;
- booleans (đúng và sai);
- vô giá trị.
-
Định dạng con người có thể đọc được. Đây là một lợi thế rõ ràng nếu người dùng cuối của bạn là con người. Ví dụ: giả sử máy chủ của bạn có cơ sở dữ liệu với lịch trình các chuyến bay. Một khách hàng đang ngồi trước máy tính ở nhà, yêu cầu dữ liệu từ cơ sở dữ liệu này bằng ứng dụng web. Vì bạn cần cung cấp dữ liệu ở định dạng mà anh ấy có thể hiểu được nên JSON là một giải pháp tuyệt vời.
-
Sự đơn giản. Nó cực kỳ đơn giản :) Ở trên, chúng tôi đã đưa ra một ví dụ về hai tệp JSON. Và ngay cả khi bạn chưa từng nghe về JavaScript (chưa nói đến các đối tượng JavaScript), bạn có thể dễ dàng hiểu được loại đối tượng được mô tả ở đó.
Toàn bộ tài liệu JSON bao gồm một trang web với một vài hình ảnh. -
Sử dụng rộng rãi. JavaScript là ngôn ngữ giao diện người dùng chiếm ưu thế và nó có các yêu cầu riêng. Sử dụng JSON là điều bắt buộc. Do đó, một số lượng lớn các dịch vụ web sử dụng JSON làm định dạng trao đổi dữ liệu. Mọi IDE hiện đại đều hỗ trợ định dạng JSON (bao gồm cả IntelliJ IDEA). Một loạt các thư viện đã được viết cho tất cả các loại ngôn ngữ lập trình để cho phép làm việc với JSON.
YAML
Ban đầu, YAML là viết tắt của "Yet Another Markup Language". Khi mới bắt đầu, nó được định vị là đối thủ cạnh tranh của XML. Giờ đây, theo thời gian, YAML có nghĩa là "YAML không phải là ngôn ngữ đánh dấu". Chính xác nó là cái gì? Hãy tưởng tượng rằng chúng ta cần tạo 3 lớp để đại diện cho các nhân vật trong một trò chơi trên máy tính: Chiến binh, Pháp sư và Kẻ trộm. Chúng sẽ có các đặc điểm sau: sức mạnh, sự nhanh nhẹn, sức bền, một bộ vũ khí. Đây là tệp YAML mô tả các lớp của chúng tôi sẽ trông như thế nào: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
Tệp YAML có cấu trúc cây: một số phần tử được lồng trong các phần tử khác. Chúng tôi có thể kiểm soát việc lồng nhau bằng cách sử dụng một số khoảng trắng nhất định mà chúng tôi sử dụng để biểu thị từng cấp độ. Ưu điểm của định dạng YAML là gì?
-
Con người có thể đọc được. Một lần nữa, ngay cả khi nhìn thấy một tệp YAML không có mô tả, bạn có thể dễ dàng hiểu các đối tượng mà nó mô tả. YAML dễ đọc đến mức con người có thể đọc được trang web yaml.org là một tệp YAML thông thường :)
-
Sự gọn nhẹ. Cấu trúc tệp được tạo bằng dấu cách: không cần sử dụng dấu ngoặc hoặc dấu ngoặc kép.
-
Hỗ trợ cấu trúc dữ liệu gốc cho các ngôn ngữ lập trình. Lợi thế rất lớn của YAML so với JSON và nhiều định dạng khác là nó hỗ trợ nhiều cấu trúc dữ liệu khác nhau. Chúng bao gồm:
-
!!map
Một tập hợp các cặp khóa-giá trị không được sắp xếp theo thứ tự; -
!!omap
Một chuỗi các cặp khóa-giá trị được sắp xếp theo thứ tự không được trùng lặp; -
!!pairs:
Một chuỗi các cặp khóa-giá trị được sắp xếp theo thứ tự có thể có các bản sao; - !!set
Một chuỗi các giá trị không có thứ tự và không bằng nhau; - !!seq
Một chuỗi các giá trị tùy ý;
Bạn sẽ nhận ra một số cấu trúc này từ Java! :) Điều này có nghĩa là các cấu trúc dữ liệu khác nhau từ các ngôn ngữ lập trình có thể được tuần tự hóa thành YAML.
-
-
Khả năng sử dụng neo và bí danh
Các điểm đánh dấu này cho phép bạn xác định một số phần tử trong tệp YAML, sau đó tham chiếu phần tử đó trong phần còn lại của tệp nếu nó xảy ra nhiều lần. Một neo được tạo bằng ký hiệu & và bí danh được tạo bằng * .
Giả sử chúng ta có một tệp mô tả sách của Leo Tolstoy. Để tránh viết ra tên tác giả cho mỗi cuốn sách, chúng ta chỉ cần tạo mỏ neo leo núi và gọi nó bằng bí danh khi cần:
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
Khi tệp này được phân tích cú pháp, giá trị "Leo Tolstoy" được thay thế ở đúng nơi chúng tôi có bí danh của mình.
- YAML có thể nhúng dữ liệu ở các định dạng khác. Ví dụ: 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 } ]
Các định dạng tuần tự hóa khác
XML
Định dạng này dựa trên cây thẻ.<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Mỗi phần tử bao gồm một thẻ mở và thẻ đóng (<> và </>). Mỗi phần tử có thể có các phần tử lồng nhau. XML là một định dạng phổ biến cũng tốt như JSON và YAML (nếu chúng ta đang nói về các dự án thực tế). Chúng ta có một bài học riêng về XML .
BSON (JSON nhị phân)
Như tên gọi của nó, BSON rất giống với JSON, nhưng nó không thể đọc được bằng con người và sử dụng dữ liệu nhị phân. Do đó, nó rất tốt cho việc lưu trữ và truyền hình ảnh cũng như các tệp đính kèm khác. Ngoài ra, BSON hỗ trợ một số kiểu dữ liệu không có trong JSON. Ví dụ: tệp BSON có thể bao gồm ngày (ở định dạng mili giây) hoặc thậm chí là một đoạn mã JavaScript. Cơ sở dữ liệu MongoDB NoSQL phổ biến lưu trữ thông tin ở định dạng BSON.Giao thức dựa trên vị trí
Trong một số tình huống, chúng tôi cần giảm mạnh lượng dữ liệu được gửi (ví dụ: nếu chúng tôi có nhiều dữ liệu và cần giảm tải). Trong tình huống này, chúng ta có thể sử dụng giao thức dựa trên vị trí, nghĩa là gửi các giá trị tham số mà không có tên của chính các tham số đó."Leo Tolstoy" | "Anna Karenina" | 1873
Dữ liệu ở định dạng này chiếm dung lượng ít hơn nhiều lần so với tệp JSON đầy đủ. Tất nhiên, có các định dạng tuần tự hóa khác, nhưng bạn không cần phải biết tất cả chúng ngay bây giờ :) Thật tốt nếu bạn đã quen thuộc với các định dạng tiêu chuẩn ngành hiện tại khi phát triển ứng dụng và ghi nhớ những ưu điểm của chúng cũng như sự khác biệt của chúng với định dạng này. khác. Và như vậy, bài học của chúng ta đã kết thúc :) Đừng quên giải quyết một số nhiệm vụ hôm nay! Cho đến lần sau! :)