Ad
Thủ Thuật Công Nghệ

YAML là gì? Kiến Thức Cơ Bản Về YAML

Pinterest LinkedIn Tumblr

Trong vài năm gần đây, Ain’t Markup Language hay còn gọi là YAML đã trở thành một trong những ngôn ngữ tuần tự hóa phổ biến và được sử dụng rộng rãi. YAML dần đã trở nên quen thuộc với các lập trình viên nhưng đối với người mới nghiên cứu lĩnh vực công nghệ thì đây lại là một khái niệm khá mới mẻ. Hãy cùng Wiki.lanit tìm hiểu về YAML là gì và các ứng dụng của nó trong lập trình nhé!

YAML là gì?

YAML là một kiểu định dạng dữ liệu trung gian được thiết kế để hỗ trợ biểu diễn các dữ liệu dưới dạng tương tự như JSON và XML, YAML được sử dụng để truyền tải dữ liệu. Tuy nhiên, YAML nổi bật với nhiều đặc điểm vượt trội, bao gồm cấu trúc dữ liệu linh hoạt hơn, khả năng hỗ trợ nhiều ngôn ngữ lập trình, mở rộng và diễn đạt dữ liệu một cách linh hoạt. Nó cũng được đánh giá cao về tính dễ sử dụng, nhờ vào việc hỗ trợ nhiều kiểu dữ liệu lập trình. Thông tin chi tiết bạn có thể tìm hiểu thêm tại trang chủ của YAML  http://www.yaml.org/.

YAML là gì?
YAML là gì?

Dưới đây là một ví dụ giúp bạn hiểu rõ hơn YAML là gì:

  name: dung

  mail: me@lcdung.top

  name: admin

  mail: admin@lcdung.top

Nếu bạn muốn chuyển đổi ngôn ngữ từ YAML sang JSON bạn có thể truy cập http://yaml-online-parser.appspot.com/ để dễ đọc hơn.

Đặc điểm nổi bật của YAML

Một tài liệu YAML có thể được nhận biết dễ dàng qua ba dấu gạch ngang ở đầu dòng, chúng đại diện cho một file mới. Nếu ta quan sát kỹ hơn, chúng ta sẽ nhận thấy cấu trúc tiêu biểu của một tài liệu YAML là một cặp key-value đi kèm với nhau.

Đặc điểm nổi bật của YAML
Đặc điểm nổi bật của YAML

Xem xét một tệp YAML để có cái nhìn tổng quan về YAML là gì 

{{EJS0}}

Tập tin YAML trên mở đầu với 6 cặp key-value, trong đó các key “Doe, pi, ray, xmas, french-hens” đi với những giá trị tương ứng. Điều đáng chú ý là YAML hỗ trợ nhiều chuỗi giá trị và chúng có thể thuộc tới 4 kiểu dữ liệu khác nhau.

Doe và ray là chuỗi (Doe hướng tới hai chuỗi giá trị: “a deer, a female deer”), pi là một số thực dưới dạng dấu phẩy động, xmas là một giá trị boolean, trong khi đó french-hens là một số nguyên. Khi mô tả các chuỗi giá trị (value), bạn có thể đặt chúng trong dấu ngoặc kép hoặc dấu ngoặc đơn. Đối với các giá trị số, nếu chúng không được bao quanh bởi dấu phẩy động , YAML vẫn có thể nhận diện chúng như là số nguyên hoặc số thực.

Đối tượng tiếp theo là một mảng, bạn có thể nhận thấy rằng “calling-birds” có 4 phần tử và trước mỗi một phần tử được biểu thị bằng một dấu gạch ngang. Mỗi phần tử cũng được thụt đầu dòng hai khoảng trắng để thể hiện rõ ràng mối quan hệ cha-con. Tương tự, “xmas-fifth-day” cũng chứa 5 phần tử và mỗi phần tử đều được thụt vào để làm nổi bật cấu trúc của nó.

Bây giờ bạn hay xem tệp tài liệu dưới dạng ngôn ngữ JSON. 

{{EJS1}}

Định dạng của YAML

YAML sử dụng khoảng trắng làm một trong những quy tắc định dạng chính. Khi bạn thiết kế một tài liệu YAML, việc thụt lề phụ thuộc vào từng trường hợp cụ thể để đảm bảo sự đồng nhất. Mức thụt lề được biểu diễn bằng một hoặc nhiều khoảng trắng. Dưới đây là một ví dụ về tài liệu YAML với phần thụt lề là hai khoảng trắng:

{{EJS2}}

Sau đây bạn có thể quan sát cách một tệp lệnh Python phân tích YAML. Tài liệu có tên foo.yaml. Nếu muốn Python đọc được thì bạn cần di chuyển đến thư viện PyYAML bởi nó có thể ánh xạ tập YAML vào từ điển.

{{EJS3}}

Output: {{EJS4}}

Cách comment trong YAML

Nếu bạn muốn để lại comment trong YAML, bạn có thể sử dụng #. Phần comment bạn thêm có thể xuất hiện sau value hoặc ở toàn bộ dòng.

{{EJS5}}

Các kiểu dữ liệu của YAML là gì?

Mỗi cặp key – value trong YAML đều chứa giá trị vô hướng. Cách chúng hoạt động tương đương với các kiểu vô hướng trong các ngôn ngữ khác như JavaScript, Python và Perl. Dưới đây là một số kiểu dữ liệu phổ biến của YAML:

Cặp key-value và từ điển

Cặp key – value đóng vai trò quan trọng trong cú pháp của YAML. Trong tệp dữ liệu YAML, mỗi mục có thể tương ứng với một từ điển. Key luôn là một chuỗi, trong khi value có thể là một kiểu dữ liệu vô hướng như chuỗi, số hoặc một từ điển.

Loại số

YAML cũng nhận diện kiểu số, bao gồm cả dấu phẩy động và số nguyên, như đã thấy trong ví dụ đầu tiên mà chúng ta đã xem xét. Các số nguyên trong YAML có thể ở dạng thập phân, lục phân hoặc bát phân.

{{EJS6}}

Hãy chạy tệp lệnh Python để phân tích

{{EJS7}}

Bạn có thể thấy Ox biểu thị một giá trị là hex, số 0 đứng đầu biểu thị một giá trị bát phân và nhận thấy YAML còn có thể hỗ trợ hàm mũ cũng như dấu phẩy động.

{{EJS8}}

{{EJS9}}

Biểu diễn dưới dạng NAN (not a number) hoặc Infinity trong đó Foo là inf, plop là NAN và bar là âm inf).

Strings

Trong nhiều trường hợp bạn không cần đặt chuỗi trong ngoặc kép {{EJS11}}

Bạn có thể xử lý chuỗi như: {{EJS12}}

Tuy nhiên khi muốn xử lý một chuỗi thoát (Escape Sequences) bạn cần dùng dấu ngoặc kép: {{EJS13}}

Nếu giá trị thứ hai không trích dẫn thì YAML sẽ xử lý giá trị đầu tiên bằng ký tự xuống dòng: {{EJS14}}

Trong YAML, việc sử dụng dấu nháy đơn để bao quanh chuỗi là phổ biến, đặc biệt là khi biểu thị văn bản dài kéo dài qua nhiều dòng: {{EJS15}}

Tuy nhiên chúng cũng có thể được biểu thị trên cùng một dòng: {{EJS16}}

Dù bạn có thể sử dụng ký tự khối (pipe) để thực hiện công việc nói trên, YAML vẫn cung cấp cách thông dịch chính xác hơn: {{EJS17}}

Do đó mà có thể thấy các dòng mới xuất hiện trong tập YAML: {{EJS17}}

Nulls

Bạn có thể nhập Null với dấu ngã hoặc một chuỗi nguyên vẹn {{EJS19}}

Kết quả: {{EJS20}}

Cho thấy Null không được Python hỗ trợ biểu diễn.

Booleans

Các giá trị Booleans được biểu diễn thông qua Keyword False (Off/No) hoặc True (On/Yes).

Mảng

Một mảng hay danh sách có thể được chỉ định trên cùng một dòng  {{EJS22}}

Đôi khi có thể biểu diễn trên nhiều dòng {{EJS23}}

Đặc biệt là danh sách có nhiều thành phần phức tạp {{EJS24}}

Từ điển

Bạn hoàn toàn có thể biểu diễn từ điển trên một dòng {{EJS25}} hoặc {{EJS26}}

hay lồng {{EJS27}}

Vì sao cần sử dụng YAML?

Cũng giống XML hay JSON, YAML dùng để chứa các thông tin dưới dạng text dùng cho các file config hay các giá trị hằng,…

Vì sao cần sử dụng YAML?
Vì sao cần sử dụng YAML?

Có nhiều lý do mà YAML trở thành một lựa chọn phổ biến cho việc định dạng và truyền tải dữ liệu trong các ứng dụng và hệ thống khác nhau. Dưới đây là một số lý do chính:

  • YAML được thiết kế để đọc và hiểu dễ dàng. Cú pháp của nó rất gần với ngôn ngữ tự nhiên, giúp làm tăng tính tường minh và giảm thiểu lỗi khi viết mã.
  • YAML hỗ trợ nhiều kiểu dữ liệu, bao gồm chuỗi, số, danh sách và đối tượng. Điều này làm tăng linh hoạt và có thể sử dụng trong nhiều tình huống khác nhau.
  • YAML có thể tích hợp dễ dàng với nhiều ngôn ngữ lập trình thông dịch khác nhau. Nó được sử dụng rộng rãi trong các dự án sử dụng các ngôn ngữ như Python, JavaScript, Ruby và nhiều ngôn ngữ khác.
  • YAML thường được sử dụng để định dạng các file cấu hình. Điều này bao gồm cấu hình cho các ứng dụng, máy chủ và hệ thống khác nhau.
  • YAML có khả năng hỗ trợ mở rộng dữ liệu, cho phép bạn đặt các tham chiếu và tái sử dụng dữ liệu một cách dễ dàng.
  • YAML và JSON có sự tương đồng và YAML thậm chí có thể được coi là một mở rộng của JSON. Điều này làm cho chúng tương thích với nhau, bạn có thể chuyển đổi dữ liệu giữa chúng một cách thuận tiện.
  • YAML cho phép việc chèn ghi chú (comment) trong file, giúp làm rõ mục đích và ý nghĩa của các đoạn mã.
  • YAML cung cấp khả năng sử dụng phép gán (anchor), giúp tái sử dụng dữ liệu một cách hiệu quả và giảm sự lặp lại trong mã nguồn.
  • YAML có sẵn nhiều thư viện hỗ trợ cho nhiều ngôn ngữ khác nhau. Điều này tăng tính di động và tích hợp của YAML trong cộng đồng phần mềm.

Sau khi đã hiểu YAML là gì thì chắc hẳn bạn cũng sẽ trả lời được câu hỏi YAML dùng để làm gì và vì sao cần dùng YAML. Sau đây hãy cùng tham khảo một số cú pháp sử dụng YAML dưới đây.

Cú pháp sử dụng YAML

String

A string

'A singled-quoted string'

"A double-quoted string"

Number

# an integer

12

# a float

13.4

Boolean

true

false

Array

array1: [1,2,3]

// or

array2:

  - 1

  - 2

  - 3

Object

object1: {property1: value1, property2: value2}

//or

object2:

 - property1: value1

 - property2: value2

Kết luận

Bài viết trên đã tổng hợp các thông tin về YAML mà bạn cần phải biết. Lanit hy vọng bạn đã có cái nhìn sâu hơn về YAML là gì, các ứng dụng của nó và biết cách sử dụng hiệu quả trong việc lập trình.

Mình là Tú Anh - Hiện mình đang đảm nhận một số mảng trong chiến dịch Marketing tại LANIT. Mình đã có kinh nghiệm nhiều năm trong mảng kinh doanh online, nên rất hy vọng với những kiến thức mình chia sẻ về lĩnh vực này sẽ thật sự hữu ích đối với các bạn.

Comments are closed.