YAML không phải là một ngôn ngữ đánh dấu văn bản như HTML, XML.

 YAML  là một chuẩn định dạng dữ liệu được thiết kế để người, chương trình máy và tất cả ngôn ngữ lập trình cùng đọc được (có thể coi nó là một ngôn ngữ chéo: cross-language).

YAML dùng để làm gì ?

Tương tự JSON, XML, INI, … YAML có thể được dùng để lưu trữ các các cấu hình, đặc tả dữ liệu chương trình.

Ví dụ một đoạn dữ liệu YAML:

- just: write some
- yaml: 
  - [here, and]
  - {it: updates, in: real-time}

Tương đương với đoạn mã JSON, như sau:

[
  {
    "just": "write some"
  }, 
  {
    "yaml": [
      [
        "here", 
        "and"
      ], 
      {
        "it": "updates", 
        "in": "real-time"
      }
    ]
  }
]

Tool hỗ trợ chuyển đổi định dạng YAML sang JSON: http://yaml-online-parser.appspot.com/ Bạn có thể cần dùng đến trang này trong trường hợp muốn chuyển đổi dữ liệu hoặc kiểm nghiệm bài học.

Ưu điểm YAML

  • Hỗ trợ comment
  • Linh hoạt trong biểu diễn dữ liệu mức cao, nhờ hỗ trợ các cấu trúc dữ liệu: float, array, list, tags, …
  • Hỗ trợ phép gán (anchor property)

Như vậy, YAML rất dễ sử dụng, linh hoạt trong biểu diễn dữ liệu mức cao và hiện đại. 😀

Các cú pháp cơ bản

1. YAML yêu cầu sử dụng khoảng trắng (space) để định nghĩa dữ liệu. Không dùng dấu tab (chú ý: trong notepad++ các bạn vẫn có thể define 1 khoảng tab sẽ tương ứng với 2, 4, … ký tự space)
2. Ký tự  #  để bắt đầu dòng comment
3. Ký tự  –  khai báo một danh sách các phần tử

# Khai bao array
- item 1
- item 2
- # item 3 là 1 array
  - item 3.1
  - item 3.2
- # item 4 là array lồng
  - # item 4.1
    - item 4.1.1
    - item 4.1.2
  - # item 4.2
    - item 4.2.1
Output

[
  "item 1", 
  "item 2", 
  [
    "item 3.1", 
    "item 3.2"
  ], 
  [
    [
      "item 4.1.1", 
      "item 4.1.2"
    ], 
    [
      "item 4.2.1"
    ]
  ]
]

4. Ba ký tự gạch ngang  —  để bắt đầu 1 đoạn tài liệu. Nếu gặp ba ký chấm  …  YAML sẽ dừng lại và không đọc dữ liệu tiếp theo nữa !

---
hr: # 1998 hr ranking
  - Mark McGwire
  - Sammy Sosa
rbi:
  # 1998 rbi ranking
  - Sammy Sosa
  - Ken Griffey

5. Với các giá trị lặp lại hoặc sử dụng nhiều lần, sử dụng các toán tử  &  để gán 1 biến tham chiếu đến, toán tử  *  để lấy giá trị.

Ta có thể viết lại ví dụ trên như sau cho ta cùng 1 kết quả :

---
hr:
  - Mark McGwire
  # Following node labeled SS
  - &SS Sammy Sosa
rbi:
  - *SS # Subsequent occurrence
  - Ken Griffey

Các đặc tả nâng cao, xem tại đây: http://www.yaml.org/spec/1.2/spec.html

Happy Coding !
 

About The Author