Bảng cheat định dạng TOON
Nếu bạn đã từng cảm thấy JSON quá dài dòng (tất cả những dấu ngoặc nhọn đó!) nhưng YAML hơi quá "ma thuật" và khó đoán, thì có thể bạn đã yêu TOON. Định dạng này tạo ra sự cân bằng độc đáo giữa khả năng đọc của con người và tốc độ phân tích cú pháp của máy. Nó được thiết kế dày đặc, rõ ràng và phân tích cực kỳ nhanh.
Cho dù bạn đang di chuyển dữ liệu hay chỉ đang cố gắng gỡ lỗi một tệp cấu hình, bảng tóm tắt này bao gồm cú pháp thiết yếu mà bạn cần biết.
Triết lý: Ít tiếng ồn hơn, nhiều dữ liệu hơn
Điều đầu tiên bạn sẽ nhận thấy là TOON trông rất giống YAML, nhưng nó hoạt động hoàn toàn giống JSON. Nó bỏ dấu ngoặc nhọn mở và đóng để thay vào đó là thụt lề và dòng mới, giúp dữ liệu của bạn trông rõ ràng hơn ngay lập tức.
Đối tượng và lồng nhau
Trong JSON, bạn đã quen với việc gói mọi thứ trong dấu ngoặc nhọn. Trong TOON, cấu trúc được ngụ ý bằng cách thụt lề.
JSON:
{
"dự án": {
"siêu dữ liệu": {
"tên": "Alpha-Centauri",
"trạng thái": "đang hoạt động"
},
"cột mốc": [
{
"giai đoạn": "thiết kế",
"ưu tiên": 1
},
{
"giai đoạn": "thử nghiệm",
"ưu tiên": 2
}
]
}
}
TOON:
dự án:
siêu dữ liệu:
Tên: Alpha-Centauri
trạng thái: đang hoạt động
mốc quan trọng[2]{giai đoạn,ưu tiên}:
thiết kế, 1
thử nghiệm, 2
Lưu ý rằng các khóa không yêu cầu dấu ngoặc kép trừ khi chúng chứa các ký tự đặc biệt và hệ thống phân cấp rõ ràng.
Sức mạnh của mảng
Đây là điểm TOON thực sự khác biệt so với các định dạng khác. TOON yêu cầu bạn khai báo độ dài của mảng trong chính khóa đó. Điều này ban đầu có vẻ kỳ lạ, nhưng nó cho phép trình phân tích cú pháp phân bổ trước bộ nhớ, khiến nó nhanh chóng.
Mảng nguyên thủy
Đối với danh sách chuỗi hoặc số đơn giản, TOON sử dụng cú pháp nhỏ gọn, phân tách bằng dấu phẩy.
Cú pháp:
khóa [độ dài]:item1,item2,item3
Nếu bạn có một mảng gốc (toàn bộ tệp chỉ là một danh sách), nó sẽ trông như thế này:
Mảng dạng bảng (Tính năng sát thủ)
Đây là tính năng thường thu hút các nhà phát triển. Nếu bạn có một mảng các đối tượng có chung khóa (như các hàng trong cơ sở dữ liệu), TOON cho phép bạn xác định lược đồ once trong tiêu đề và sau đó chỉ liệt kê các giá trị. Điều này loại bỏ lượng lớn dư thừa được tìm thấy trong JSON.
Cú pháp:
khóa[hàng]{col1,col2}:
JSON:
{
"hàng tồn kho": [
{
"mã hàng": "KB-99",
"số lượng": 50,
"lối đi": 4,
"sắp xếp lại": sai
},
{
"mã hàng": "MS-12",
"số lượng": 12,
"lối đi": 7,
"sắp xếp lại": đúng
},
{
"mã hàng": "MN-44",
"số lượng": 8,
"lối đi": 2,
"sắp xếp lại": đúng
}
]
}
TOON:
hàng tồn kho[3]{sku,qty,aisle,reorder}:
KB-99,50,4, sai
MS-12,12,7, đúng
MN-44,8,2, đúng
Cách tiếp cận "CSV-inside-YAML" này làm cho các tập dữ liệu lớn trở nên nhỏ gọn và dễ đọc đến mức khó tin.
Mảng hỗn hợp và lồng nhau
Đôi khi dữ liệu không đồng nhất. Nếu mảng của bạn chứa các loại dữ liệu khác nhau (các số được trộn lẫn với các đối tượng) hoặc nếu mảng đó chứa các đối tượng lồng nhau phức tạp thì TOON sẽ quay lại cú pháp kiểu dấu đầu dòng bằng cách sử dụng dấu gạch nối.
Bạn thậm chí có thể có mảng bên trong mảng. Lưu ý cách mảng bên trong cũng khai báo độ dài của nó:
Trích dẫn: Khi nào nên sử dụng nó
Một trong những điều thú vị nhất về TOON là bạn hiếm khi cần đến những câu trích dẫn. Bạn có thể viết Xin chào 世界 👋 mà không cần gói nó trong "". Tuy nhiên, vì TOON cố gắng suy ra các loại (số, boolean), nên có các quy tắc cụ thể khi bạn phải sử dụng dấu ngoặc kép.
Danh sách “Phải Trích dẫn”
Bạn phải bọc chuỗi của mình trong dấu ngoặc kép "" nếu:
- Nó trông giống như một số hoặc boolean: Nếu bạn muốn chuỗi
"123"hoặc"true", hãy trích dẫn nó. Nếu không, chúng sẽ trở thành số123và booleantrue.
- Nó chứa các dấu phân cách: Nếu chuỗi của bạn có dấu phẩy
,(hoặc bất kỳ dấu phân cách hoạt động nào của bạn), hãy trích dẫn nó.
- Nó có các cạnh khoảng trắng: Khoảng trắng ở đầu hoặc cuối cần có dấu ngoặc kép.
- Nó chứa các ký tự đặc biệt: Các ký tự như
:,",\,[,],{,}.
- Nó trống: Một chuỗi trống được biểu diễn dưới dạng
"".
Ví dụ:
Trình tự thoát
Giữ nó đơn giản. TOON chỉ nhận ra năm chuỗi thoát bên trong chuỗi. Bất cứ điều gì khác là không hợp lệ.
\\(Dấu gạch chéo ngược)
\"(Trích dẫn kép)
\n(Dòng mới)
\r(Trả xe)
\t(Tab)
Tiêu đề và dấu phân cách nâng cao
Điều gì sẽ xảy ra nếu dữ liệu của bạn đầy dấu phẩy? Bạn không muốn trích dẫn từng lĩnh vực. TOON cho phép bạn thay đổi dấu phân cách trong tiêu đề mảng.
Bạn có thể sử dụng Tab hoặc Pipe (|) bằng cách đặt nó bên trong dấu ngoặc hoặc dấu ngoặc nhọn.
Ví dụ về dấu phân cách ống:
Bằng cách thêm | vào tiêu đề, trình phân tích cú pháp biết cách tìm các dấu dẫn thay vì dấu phẩy, giữ cho cú pháp của bạn rõ ràng.
Gấp chìa khóa
Nếu bạn có tính năng lồng sâu nhưng chỉ có một đường dẫn dữ liệu thì bạn không cần thụt lề năm lần. Bạn có thể sử dụng ký hiệu dấu chấm (Gấp phím) để làm phẳng cấu trúc của mình.
Lồng nhau tiêu chuẩn:
người dùng:
hồ sơ:
cài đặt:
thông báo:
email: đúng
tin nhắn: sai
Gấp lại (Dọn dẹp):
user.profile.settings.notifications:
email: đúng
tin nhắn: sai
Tham khảo kiểu nhanh
TOON ánh xạ trực tiếp tới các loại JSON, nhưng nó xử lý các trường hợp đặc biệt dành riêng cho JavaScript một cách khéo léo để đảm bảo đầu ra hợp lệ.
- Số: Được lưu trữ dưới dạng số thập phân chính tắc.
1.0trở thành1.
- Infinity / NaN: Các giá trị này trở thành
null(vì JSON không hỗ trợ chúng).
- Ngày: Đã chuyển đổi thành chuỗi ISO được trích dẫn.
- Không xác định/Chức năng: Đã chuyển đổi thành
null.
- Đối tượng trống: Được biểu thị là không có gì (đầu ra trống).
- Mảng trống: Được biểu thị dưới dạng
key[0]:.
TOON là một định dạng đề cao độ chính xác. Có thể mất chút thời gian để làm quen với việc đếm các mục trong mảng, nhưng kết quả thu được là khả năng đọc và kích thước tệp rất đáng nỗ lực. Chúc mừng mã hóa!