YAML được dùng vào mục đích tương tự JSON, XML nhưng ngắn gọn xúc tích hơn.
Ví dụ về 1 đoạn YAML được biểu diễn như sau:
-http://yaml-online-parser.appspot.com/ Là 1 trang chuyển đổi YAML sang JSON. Bạn nên dùng trang này trong lúc đọc, vừa học vừa hành lúc nào cũng tốt hơn.
name: HVN
mail: hvn@familug.org
-
name: SAM
mail: hai.lt@familug.org
YAML để làm gì?
Tương tự JSON hay XML, YAML có thể dùng để chứa đựng thông tin ở dạng text. Dùng cho các file config, lưu giá trị hằng...
YAML và JSON
- JSON là YAML, nói cách khác JSON có thể đọc được bởi các trình đọc YAML, điều ngược lại không đúng.
- JSON đáp ứng tốt hơn mục đích trao đổi dữ liệu ( thông qua AJAX...), YAML để xử lý các dữ liệu offline (file config...). Chắc vì JSON thường được xử lý nhanh hơn (http://stackoverflow.com/questions/2451732/how-is-it-that-json-serialization-is-so-much-faster-than-yaml-serialization-in-p)
YAML và XML
- YAML không có các thẻ thuộc tính như XML nhưng thay vào đó nó hỗ trợ các kiểu khai báo để xử lý dữ liệu.
Ví dụ cho dễ hiểu
1 đoạn XML
<user id="babooey" on="cpu1">
<firstname>Bob</firstname>
<lastname>Abooey</lastname>
<department>adv</department>
<cell>555-1212</cell>
<address password="xxxx">ahunter@example1.com</address>
<address password="xxxx">babooey@example2.com</address>
</user>
1 đoạn YAML
babooey:Muốn lấy thông tin của 1 user: với XML bạn tìm đến thẻ user có id="babooey", với YAML bạn tìm đến key: babooey.
computer : cpu1
firstname: Bob
lastname: Abooey
cell: 555-1212
addresses:
- address: babooey@example1.com
password: xxxx
- address: babooey@example2.com
password: xxxx
- ở 2 ví dụ trên, bạn thích cách viết của thằng nào hơn :D
Ưu điểm YAML
- Hỗ trợ comment trong file
- Tính linh hoạt trong biểu diễn dữ liệu cao nhờ có hỗ trợ kiểu dữ liệu: float, array, list...
- Hỗ trợ phép gán (anchor)...
- YAML dễ đọc-hiểu-viết, cú pháp ngắn gọn làm đoạn code YAML trong khá thoáng đãng.- Hiện tại YAML có rất nhiều thư viện cho các ngôn ngữ khác nhau: Chi tiết xem ở đây http://yaml.org/
Cú pháp
- Giống cú pháp của Python, YAML yêu cầu thụt đầu dòng trước mỗi câu. Thụt đầu dòng bởi các dấu cách (tùy cấu trúc (khối lệnh - block) mà dùng 1 hay 2,4... dấu cách), không dùng tab.- Dùng dấu # để bắt đầu comment.
- dấu "-" để bắt đầu cho 1 list các phần tử
Ví dụ:
# start YAMLKết quả: Do link dài nên rút gọn - Click vào đây
- a
- b
-
- c1
- c2
-
-
- d1
- d2
- "---" để bắt đầu cho 1 đoạn YAML, và ... để kết thúc đoạn đó ( ... có thể có hoặc không ) Ví dụ: Link
- Với các giá trị lặp lại hoặc dùng nhiều lần,dùng "&" để gán và "*" để lấy giá trị ra:
Ví dụ: Link
Ở đây pink được gán nhãn cl bằng "&cl" ở đầu. Để lấy lại giá trị pink dùng "*cl".
Cái này có vẻ giống con trỏ trong C :D & để ghi địa chỉ, * để lấy giá trị.
Còn nhiều lắm....
Tham khảo thêm về cú pháp khác ở đây: http://www.yaml.org/refcard.html
Chốt lại cho 1 bài "nâng bi": YAML là ngôn ngữ được thiết kế cho các scriptting languages như python, ruby, perl, php... nên rất dễ để chuyển đổi sang các kiểu dữ liệu của các ngôn ngữ này (như list, dict, array...).
Các Pythonista và Rubyist có thích điều này không :3
cái ví dụ đầu tiên sao có cái - là gì hả anh thồn?
ReplyDeleteEm dân thường còn thích :3
Là list các dict
Deletebổ sung:
ReplyDeletegiải thích thuật ngữ YAML
YAML là viết tắt của YAML Ain't Markup Language
Cái tên nói rõ rằng YAML không phải là một ngôn ngữ markup như HTML, XML
Kiểu chơi chữ này cũng đã từng xuất hiện với LAME
"LAME Ain't an MP3 Encoder"
In yaml backslash is not a valid escape character in single quoted strings, the only allowed escape-sequence is '' (two single quotes) resulting in one single quote in the string.
ReplyDeletehttp://yaml.org/spec/current.html#id2534365
DeleteVí dụ sau giải quyết việc 1 yaml value có chứ cả dấu :, " , '
Deleteejabberd_proc_check:
description: ejabberd Process
command: '/usr/lib/nagios/plugins/check_procs -c 1:1 -a ''-ejabberd config "/etc/ejabberd/ejabberd.cfg"'' -u ejabberd'
copy-paste cẩn thận để biết đâu là dấu " đâu là 2 dấu '