T

Text Machine

Công cụ văn bản mạnh mẽ, ngay trong trình duyệt của bạn

Bộ chuyển đổi JSON ↔ YAML

Chuyển đổi JSON sang YAML và YAML trở lại JSON ngay trong trình duyệt của bạn. Dán định dạng nào cũng được để nhận kết quả gọn gàng, thụt lề chính xác — lý tưởng cho tệp cấu hình, pipeline CI và Kubernetes manifest.

Thụt lề

Đầu vào JSON
Đầu ra YAML

Nhập dữ liệu ở trên để xem kết quả chuyển đổi tại đây.

Cách sử dụng Bộ chuyển đổi JSON ↔ YAML

  1. 1

    Chọn một chiều

    Dùng nút gạt để chọn JSON sang YAML hoặc YAML sang JSON. Nút đổi chiều sẽ đưa kết quả của bạn vào ô đầu vào để bạn chuyển ngược lại theo chiều kia.

  2. 2

    Dán dữ liệu của bạn

    Dán JSON hoặc YAML vào ô đầu vào. Quá trình chuyển đổi chạy tự động khi bạn gõ, giữ nguyên cấu trúc, lồng cấp và các kiểu dữ liệu.

  3. 3

    Chọn mức thụt lề

    Chọn thụt lề 2 hoặc 4 dấu cách cho khớp với phong cách dự án của bạn. Kết quả luôn gọn gàng và thụt lề chính xác cho cả hai định dạng.

  4. 4

    Sao chép kết quả

    Xem lại kết quả đã chuyển đổi và sao chép vào khay nhớ tạm, sẵn sàng để chèn vào một tệp cấu hình, một pipeline hay mã nguồn của bạn.

Từ JSON sang YAML: cấu hình gọn gàng hơn mà không vướng cạm bẫy

YAML là một tập cha của JSON

Mọi tài liệu JSON hợp lệ cũng đều là YAML hợp lệ — đó là một bảo đảm của đặc tả YAML, không phải sự trùng hợp. YAML thêm một lớp thân thiện với con người hơn ở bên trên: thay vì dấu ngoặc nhọn và dấu ngoặc vuông, cấu trúc được thể hiện qua việc thụt lề; thay vì dấu phẩy, các mục nằm trên dòng riêng của chúng; và khác với JSON, YAML hỗ trợ chú thích. Kết quả đọc lên như một dàn ý hơn là một đống dữ liệu, đó là lý do nó thống trị các tệp cấu hình.

Vì các mô hình dữ liệu khớp với nhau sát đến vậy — cả hai đều có ánh xạ, dãy, chuỗi, số, boolean và null — nên việc chuyển đổi giữa chúng mang tính máy móc và không mất mát đối với chính các giá trị. Phép chuyển đổi diễn đạt lại cùng một cây bằng một cú pháp bề mặt khác. Thứ duy nhất không thể sống sót qua một vòng đi-về JSON là các chú thích, vì JSON không có chỗ nào để đặt chúng.

Thụt lề chính là cú pháp

Trong YAML, khoảng trắng không phải để trang trí — nó chính là cấu trúc. Sự lồng nhau được thể hiện bằng cách thụt các khóa con vào sâu hơn khóa cha của chúng, và các mục ở cùng một độ sâu phải có chung mức thụt lề. Một ánh xạ lồng dưới một khóa trở thành một tập các dòng được thụt vào bên dưới nó; một danh sách trở thành các dòng mỗi dòng bắt đầu bằng một dấu gạch ngang. Thụt lề sai là bạn đổi ý nghĩa, chứ không chỉ vẻ ngoài, điều này trái ngược với cách JSON đối xử với khoảng trắng.

Hãy chọn một mức thụt lề nhất quán — hai khoảng trắng là mặc định phổ biến cho các tệp cấu hình, bốn cho một số quy chuẩn nội bộ — và áp dụng nó khắp nơi. Bộ chuyển đổi xuất ra mức thụt lề sạch sẽ, đồng đều để bạn khởi đầu từ một nền tảng đúng đắn thay vì phải căn dòng bằng tay.

Tab bị cấm

Đây là quy tắc bẫy gần như tất cả mọi người trong lần đầu. Đặc tả YAML cấm tường minh các ký tự tab dùng để thụt lề; bạn buộc phải dùng khoảng trắng. Một trình soạn thảo được cấu hình để chèn một tab khi bạn nhấn phím Tab sẽ lặng lẽ tạo ra một tệp không phân tích được, thường kèm một thông báo lỗi chỉ vào sai chỗ vì bộ phân tích chỉ nhận ra cấu trúc bị hỏng ở một hai dòng sau đó.

Nếu một tệp YAML không chịu nạp mà mức thụt lề trông có vẻ đúng, hãy kiểm tra tab trước tiên. Hãy cấu hình trình soạn thảo của bạn để hiển thị khoảng trắng hoặc để chuyển tab thành khoảng trắng cho các tệp YAML. Việc chuyển đổi từ JSON né được điều này hoàn toàn, vì đầu ra được sinh ra đã được thụt lề bằng khoảng trắng ngay từ đầu.

Vấn đề Na Uy và những boolean bất ngờ khác

Các bộ phân tích YAML đời cũ diễn giải một loạt từ trần đến mức giật mình thành boolean: không chỉ true và false, mà còn yes, no, on, và off ở nhiều cách viết hoa khác nhau. Thảm họa kinh điển là một danh sách mã quốc gia mà mục dành cho Norway, viết bằng hai chữ cái trần n và o, bị đọc thành boolean false và lặng lẽ biến mất khỏi dữ liệu của bạn. Các cờ bật-tắt viết là on hay off cũng có thể đổi kiểu theo cách tương tự.

Cách phòng vệ là đặt dấu ngoặc kép. Bất kỳ chuỗi nào có thể bị nhầm thành một boolean, một con số, một ngày tháng, hay null đều nên được bọc trong dấu ngoặc kép để bộ phân tích giữ nó ở dạng văn bản. Các bộ phân tích hiện đại được xây quanh schema an toàn thì nghiêm ngặt hơn và ít mắc lỗi này hơn nhiều, nhưng thói quen đặt dấu ngoặc kép cho các scalar mơ hồ vẫn đáng giữ, nhất là với các mã ngắn, các chuỗi giống số phiên bản, và bất cứ thứ gì do người dùng cung cấp.

Thêm những cạm bẫy scalar: số, số 0 đứng đầu, và null

Một vài giá trị trần khác khiến người ta bất ngờ. Một mã ZIP hay mã linh kiện có số 0 đứng đầu có thể bị đọc thành một con số và mất số 0, hoặc bị diễn giải thành hệ bát phân trong một số bộ phân tích. Các chuỗi phiên bản như 1.20 có thể bị ép thành con số 1.2, làm rơi mất số 0 ở cuối. Từ null, một giá trị rỗng, và một dấu ngã đơn độc đều mang nghĩa null. Cũng như với cái bẫy boolean, cách chữa vẫn là một: đặt dấu ngoặc kép cho bất cứ thứ gì mà dạng văn bản của nó là quan trọng.

Vì công cụ này phân tích bằng schema an toàn, nó chỉ nạp các kiểu dữ liệu tiêu chuẩn và không bao giờ dựng các đối tượng tùy ý hay thực thi mã, nên dán YAML không đáng tin cậy không thể chạy được bất cứ thứ gì. Điều đó giữ cho phép chuyển đổi có thể đoán trước: thứ bạn nhận lại là các ánh xạ, dãy và scalar thuần, không có kiểu tùy chỉnh bất ngờ nào được lén đưa vào qua các thẻ.

Nơi YAML thực sự sinh sống

Tính dễ đọc của YAML đã biến nó thành ngôn ngữ chung của hạ tầng và công cụ CI. Các tệp Docker Compose, các Kubernetes manifest, các pipeline GitHub Actions và GitLab CI, các Ansible playbook, và vô số tệp cấu hình ứng dụng đều là YAML. Trong từng cái trong số đó, các chú thích và các diff sạch sẽ mà YAML cho phép là một lợi thế thực sự khi một con người phải duyệt một thay đổi đối với cấu hình sản xuất.

JSON, ngược lại, vẫn phù hợp hơn cho việc trao đổi giữa máy với máy qua các API, nơi sự nghiêm ngặt và việc không nhạy cảm với khoảng trắng của nó giúp giảm sự mơ hồ. Một mẫu hình phổ biến là soạn và sửa bằng YAML cho thoải mái với con người, rồi chuyển sang JSON khi một công cụ hay một endpoint đòi hỏi nó — đó chính xác là lý do bộ chuyển đổi này chạy theo cả hai chiều.

Kiểu khối, kiểu dòng, và việc đọc đầu ra

YAML có thể diễn đạt cùng một dữ liệu theo hai cách. Kiểu khối trải các ánh xạ và danh sách ra trên các dòng được thụt lề và là thứ bạn muốn cho cấu hình dễ đọc. Kiểu dòng dùng dấu ngoặc nhọn và dấu ngoặc vuông nội dòng và trông gần như hệt JSON, điều thỉnh thoảng tiện cho các giá trị ngắn, gọn được nhúng trong một tài liệu lớn hơn. Biết cả hai giúp bạn đọc YAML do người khác viết mà không bị nhầm lẫn.

Khi bạn chuyển đổi ở đây, hãy dán JSON vào, chọn mức thụt lề của bạn, và xem lại đầu ra kiểu khối trước khi đặt nó vào một kho mã. Mọi thứ đều diễn ra cục bộ trong trình duyệt của bạn, nên các bí mật trong một tệp cấu hình — các token, các chuỗi kết nối, các tên máy chủ nội bộ — không bao giờ rời khỏi thiết bị của bạn, điều này khiến việc chuyển đổi các manifest triển khai thực sự thay vì các ví dụ đã được làm sạch trở nên an toàn.

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

JSON và YAML khác nhau như thế nào?
JSON là một định dạng dữ liệu nghiêm ngặt, dùng dấu ngoặc nhọn và dấu ngoặc vuông, lý tưởng cho API và trao đổi giữa các máy. YAML là một superset thân thiện với con người của JSON, dùng thụt lề thay cho dấu ngoặc nhọn và hỗ trợ chú thích, nhờ đó rất phổ biến cho các tệp cấu hình như Docker Compose, GitHub Actions và Kubernetes manifest.
Làm thế nào để chuyển JSON sang YAML?
Dán JSON của bạn vào ô đầu vào, công cụ sẽ phân tích và chuyển nó thành YAML, giữ nguyên cấu trúc, lồng cấp, mảng và các kiểu dữ liệu như số, boolean và null. Chọn độ rộng thụt lề cho khớp với quy ước của dự án bạn.
Công cụ có chuyển YAML trở lại JSON được không?
Có. Đổi chiều sang YAML sang JSON, công cụ sẽ phân tích YAML của bạn và xuất ra JSON hợp lệ, được định dạng đẹp. Lưu ý rằng các chú thích trong YAML sẽ không được giữ lại, vì JSON không có cú pháp cho chú thích.
Phân tích YAML không đáng tin ở đây có an toàn không?
Có. Bộ chuyển đổi dùng schema YAML an toàn, vốn chỉ nạp các kiểu dữ liệu tiêu chuẩn — map, sequence, chuỗi, số, boolean và null — và không bao giờ thực thi mã hay khởi tạo các kiểu tùy chỉnh. Việc dán YAML không đáng tin không thể chạy bất cứ thứ gì trong trình duyệt của bạn.
Dữ liệu của tôi có được tải lên máy chủ không?
Không. Mọi việc phân tích và chuyển đổi đều diễn ra hoàn toàn trong trình duyệt của bạn. Dữ liệu của bạn không bao giờ bị tải lên, ghi lại hay lưu trữ, nên nó hoàn toàn riêng tư và công cụ vẫn hoạt động ngay cả khi bạn ngoại tuyến.

Công cụ liên quan

Tiếp tục với những công cụ hữu ích này

Bộ chuyển đổi JSON ↔ CSV

Bộ chuyển đổi Unix Timestamp

Bộ chuyển đổi Nhị phân ↔ Thập phân

Bộ Chuyển Đổi Thập Phân ↔ Nhị Phân

Bộ chuyển đổi CSV sang JSON

Bộ chuyển đổi Văn bản ↔ Nhị phân