- docx (định dạng Microsoft Word);
- pdf (định dạng Adobe);
- mobi (thường được sử dụng trong các thiết bị Amazon Kindle);
- và nhiều hơn nữa (ePub, djvu, fb2...).
JSON
Ký hiệu đối tượng JavaScript. Bạn đã có chút quen thuộc với anh ấy rồi! Chúng ta đã nói về vấn đề này trong bài giảng này và chúng ta đã xem xét việc tuần tự hóa trong JSON tại đây . Nó có tên như vậy là có lý do. Các đối tượng Java được chuyển đổi sang JSON thực sự trông giống hệt các đối tượng JavaScript. Bạn không cần phải biết JavaScript để hiểu ý nghĩa của đối tượng của chúng tôi:{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
}
Không cần thiết phải vượt qua một đối tượng. JSON cũng có thể chứa một mảng đối tượng:
[
{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
},
{
"title": "Бесы",
"author": "Федор Достоевский",
"year": 1872
},
{
"title": "Чайка",
"author": "Антон Чехов",
"year": 1896
}
]
Vì JSON là một đối tượng JavaScript nên nó hỗ trợ các định dạng dữ liệu JavaScript sau:
- dây;
- số (số);
- đồ vật (đối tượng);
- mảng (mảng);
- giá trị boolean (đú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ụ: máy chủ của bạn lưu trữ cơ sở dữ liệu về lịch trình chuyến bay. Một khách hàng yêu cầu dữ liệu từ cơ sở dữ liệu này bằng ứng dụng web khi ngồi ở nhà trước máy tính. 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. Bạn có thể nói nó cơ bản :) Ở trên chúng tôi đã đưa ra ví dụ về hai tệp JSON. Và ngay cả khi bạn chưa bao giờ nghe nói về sự tồn tại của JavaScript (chưa nói đến các đối tượng của nó), bạn vẫn có thể dễ dàng hiểu loại đối tượng nào được mô tả ở đó.
Toàn bộ tài liệu JSON là một trang web có một vài hình ảnh. -
Phổ biến rộng rãi. JavaScript là ngôn ngữ giao diện người dùng chiếm ưu thế và nó đưa ra các điều khoản của nó. 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 thư viện đã được viết để làm việc với JSON cho tất cả các ngôn ngữ lập trình có thể.
YAML
Khi bắt đầu tồn tại, nó là viết tắt của Yet Another Markup Language - “một ngôn ngữ đánh dấu khác”. Vào thời điểm đó, nó được định vị là đối thủ cạnh tranh với XML. Bây giờ, sau một thời gian, nó là viết tắt của “YAML Ain't Markup Language” (“YAML không phải là ngôn ngữ đánh dấu”). tính cách anh ta như thế nào? Hãy tưởng tượng rằng chúng ta cần tạo 3 lớp nhân vật cho trò chơi trên máy tính của mình: Chiến binh, Pháp sư và Kẻ trộm. Họ sẽ có những đặc điểm sau: sức mạnh, sự nhanh nhẹn, sức bền và một bộ vũ khí. Tệp YAML của chúng tôi với các mô tả lớp sẽ trông như thế này: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 vào các phần tử khác. Chúng ta 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 để biểu thị từng cấp độ. Định dạng YAML có những ưu điểm gì?
-
Con người có thể đọc được. Một lần nữa, ngay cả khi bạn thấy tệp yaml không có mô tả, bạn vẫn có thể dễ dàng hiểu được những đối tượng nào được mô tả trong đó. YAML dễ đọc đến mức nào mà trang chính của yaml.org là một tệp yaml thông thường :)
-
Sự nhỏ gọn. Cấu trúc tệp được hình thành bởi 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 có nguồn gốc từ ngôn ngữ lập trình. Ưu điểm rất lớn của YAML so với JSON và nhiều định dạng khác là nó hỗ trợ các cấu trúc dữ liệu khác nhau. Trong số đó:
-
!!map
Một tập hợp các cặp khóa:giá trị không có thứ tự và không có khả năng trùng lặp; -
!!omap
Một chuỗi các cặp khóa:giá trị được sắp xếp theo thứ tự không có khả năng 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ó khả năng trùng lặp; - !!set
Một chuỗi các giá trị không có thứ tự không bằng nhau; - !!seq
Chuỗi giá trị tùy ý;
Một số cấu trúc này sẽ quen thuộc với bạn khi sử dụng Java! :) Nhờ tính năng này, bạn có thể tuần tự hóa nhiều cấu trúc dữ liệu khác nhau từ các ngôn ngữ lập trình sang định dạng YAML.
-
-
Khả năng sử dụng neo và bí danh
Bản dịch của các từ "neo" và "bí danh" - "neo" và "bút danh". Về nguyên tắc, nó mô tả khá chính xác bản chất của các thuật ngữ này trong YAML.
Chúng cho phép bạn xác định một phần tử trong tệp yaml và 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. Điểm 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ả về sách của Leo Tolstoy. Để tránh viết tên tác giả theo cách thủ công mỗi lần, chúng ta chỉ cần tạo một mỏ neo "leo" và tham chiếu nó bằng bí danh khi chúng ta 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 chúng tôi đọc tệp này bằng một số trình phân tích cú pháp, giá trị “Leo Tolstoy” sẽ được thay thế vào đúng vị trí thay cho bí danh của chúng tôi.
- Bạn có thể nhúng dữ liệu ở các định dạng khác trong YAML. 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ái gọi là 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, không thua kém gì JSON và YAML (nếu nói về việc sử dụng trong các dự án thực tế). Chúng tôi có một bài giảng riêng về XML .
BSON (JSON nhị phân)
Đúng như tên gọi, nó rất giống với JSON, nhưng con người không thể đọc được và hoạt động trên dữ liệu ở định dạng nhị phân. Điều này làm cho nó rất thuận tiện cho việc lưu trữ và chuyể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ố loại dữ liệu không có trong JSON. Ví dụ: bạn có thể viết ngày (ở định dạng mili giây) hoặc thậm chí một đoạn mã JavaScript vào tệp BSON. Cơ sở dữ liệu NoSQL phổ biến MongoDB lưu trữ thông tin ở định dạng BSON.Giao thức dựa trên vị trí
Trong một số trường hợp, chúng ta cần giảm đáng kể lượng dữ liệu được truyền (ví dụ: nếu có nhiều dữ liệu và chúng ta 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à truyền các giá trị tham số mà không cần 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 ít dung lượng hơn nhiều so với tệp JSON chính thức. 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 khi làm quen với các định dạng hiện là tiêu chuẩn ngành để phát triển ứng dụng và ghi nhớ những ưu điểm cũng như sự khác biệt của chúng với nhau . Và bài giảng của chúng ta đã kết thúc :) Đừng quên giải một số bài toán hôm nay nhé! Hẹn gặp lại! :)
GO TO FULL VERSION