JSON Toolkit

JSON hay YAML

Kết luận: JSON phân định bằng ngoặc còn YAML bằng thụt lề: máy thì dùng JSON, người chỉnh sửa cấu hình thì dùng YAML. Chú thích, anchor và cấu trúc nhiều tài liệu không sống sót khi chuyển đổi.

Người mớiĐọc khoảng 4 phútXuất bản 2026-10-30Cập nhật 2026-10-30
Khi nào dùng JSON và khi nào dùng YAML

Tóm lại: dùng JSON cho dữ liệu máy với máy và YAML cho cấu hình do con người chỉnh sửa; ưu tiên YAML khi bạn cần chú thích, văn bản nhiều dòng hay anchor, và JSON khi mọi ngôn ngữ phải phân tích cùng một payload mà không mơ hồ.

Đặt cạnh nhau

{
  "server": {
    "host": "127.0.0.1",
    "port": 8080
  }
}
server:
  host: 127.0.0.1
  port: 8080

Cùng một cấu trúc. YAML bỏ dấu câu và có thêm chỗ cho chú thích.

Chúng khác nhau ở đâu

JSON YAML
Cấu trúc Ngoặc và dấu phẩy Thụt lề
Chú thích Không Có
Chuỗi Nháy kép, bắt buộc escape Thường là không nháy
Văn bản nhiều dòng Escape \n hoặc mảng Block scalar `
Tái sử dụng Không Anchor & và alias *
Nhiều tài liệu Gói trong một mảng Dấu phân cách ---
Tốc độ phân tích Nhanh Chậm hơn, có quy tắc thụt lề
Tính mơ hồ Rất thấp no bị đọc thành boolean, lệch thụt lề một cấp

Dòng cuối chính là cái giá thật của YAML. Trong YAML 1.1, country: NO cho ra boolean false, và version: 1.0 có thể thành số thực. JSON hoàn toàn không có kiểu ngầm định.

Cách chọn

JSON: thân yêu cầu và phản hồi, thông điệp giữa các dịch vụ, cột JSON trong cơ sở dữ liệu, mọi thứ phải phân tích giống nhau ở mọi ngôn ngữ.

YAML: các hệ sinh thái lấy nó làm mặc định (Kubernetes, Ansible, GitHub Actions, Docker Compose); cấu hình cần giải thích; tệp chủ yếu là văn bản dài như chứng chỉ, script hay SQL.

Chuyển đổi mất những gì

YAML → JSON: toàn bộ chú thích, việc tái sử dụng anchor (bị mở rộng thành bản sao), mọi tài liệu trừ tài liệu đầu, và cách viết gốc của ngày tháng cùng boolean.

JSON → YAML: sự phân biệt chuỗi/số yếu đi, nên "8080" và 8080 đều cần đặt nháy tường minh để an toàn.

Hãy chuyển đổi cho việc di cư và kiểm tra một lần. Đừng bảo trì cùng một tệp ở hai định dạng như hai góc nhìn song song.

Câu hỏi thường gặp

Tôi nên quyết định giữa JSON và YAML thế nào?

Hãy bắt đầu từ người đọc và bảo trì tệp: dùng JSON khi chương trình sinh ra nó, nó đi qua ranh giới ngôn ngữ, và phải phân tích một cách dự đoán được; dùng YAML khi con người chỉnh sửa và cần giải thích trường hoặc văn bản nhiều dòng dài. Chúng chuyển đổi qua lại được, nhưng đừng bảo trì cùng một cấu hình ở cả hai định dạng về lâu dài.

Vì sao YAML tạo ra nhiều mơ hồ về kiểu hơn?

YAML có kiểu ngầm định, nên những giá trị như NO, on hay 1.0 có thể thành boolean, ngày hoặc số. JSON chỉ có kiểu tường minh: chuỗi phải đặt nháy, điều này làm việc phân tích dự đoán được hơn giữa các ngôn ngữ.

Chú thích và anchor có nên sống sót khi chuyển YAML sang JSON không?

Không. Chú thích, anchor và nhiều tài liệu của YAML không thể biểu diễn trong JSON; anchor bị mở rộng thành nội dung trùng lặp. Nếu cần giữ chúng, hãy dùng thư viện YAML có Document API thay vì chuyển vòng qua đối tượng.

Đọc thêm