UltKit

Chuyển JSON sang YAML

Viết lại JSON thành YAML để mọi người dễ đọc, dễ review và thêm chú thích. Tải lên file .json và nhận file .yaml thụt lề chuẩn, giữ nguyên khóa, giá trị và thứ tự, sẵn sàng đưa vào repository.

Chuyển đổi dữ liệu

hoặc thả tệp CSV, TSV, TXT … vào đây ·

Tối đa 95 MB mỗi tệp· Tối đa 20 tệp· Xóa sau 30 phút

Đầu ra

Tệp được xử lý trên máy chủ của chúng tôi và bị xóa sau 30 phút.

Cách sử dụng công cụ này

  1. 1

    Thêm các file JSON

    Tải lên phản hồi API, cài đặt đã xuất hoặc manifest được tạo tự động dưới dạng .json, tối đa 20 tệp, mỗi tệp 95 MB. Mỗi tệp phải chứa một giá trị JSON hợp lệ.

  2. 2

    Giữ nguyên cài đặt mặc định

    YAML đã được chọn sẵn trong mục Chuyển sang. Với tệp cấu hình, bạn không cần thay đổi gì thêm; kết quả dùng thụt lề hai dấu cách.

  3. 3

    Chuyển đổi và commit

    Nhấn Chuyển sang YAML, tải xuống các tệp .yaml, thêm chú thích ở những chỗ người đọc sau cần đến, rồi commit.

Trả lời

Làm thế nào để chuyển JSON sang YAML?

Tải lên tệp .json và nhấn Chuyển sang YAML. Đối tượng trở thành các khối key: value thụt lề, mảng trở thành danh sách có dấu gạch ngang, và các chuỗi mà YAML có thể hiểu nhầm vẫn giữ dấu nháy.

Vì sao nên chuyển JSON sang YAML cho file cấu hình

Phần lớn JSON do phần mềm tạo ra: phản hồi API, bản xuất cài đặt, đầu ra của một trình sinh. Phần lớn YAML do con người bảo trì. Việc chuyển đổi thường đánh dấu thời điểm dữ liệu thôi là đầu ra của máy và trở thành thứ một nhóm làm chủ, chẳng hạn manifest triển khai được lưu trong Git, một pipeline CI, hoặc bộ biến Ansible.

Một trường hợp điển hình: bạn gọi API đám mây, nhận về bản mô tả tài nguyên JSON dài 200 dòng và muốn giữ nó làm mã hạ tầng. Chuyển đổi cho bạn một tệp không có dấu ngoặc nhọn và dấu phẩy, nơi thay đổi một dòng chỉ tạo ra diff một dòng và bạn có thể giải thích các giá trị lạ bằng chú thích. Tương tự với dữ liệu kiểm thử và tệp dịch mà người không phải lập trình viên chỉnh sửa. Khi bạn cần một bảng phẳng, cho bảng tính hoặc báo cáo, JSON sang CSV phù hợp hơn.

Các công cụ dùng file cấu hình YAML

File YAML sau khi chuyển đổi thường được dùng ở đâu
Tổ chứcYêu cầuNguồn
GitHub ActionsWorkflow nằm trong .github/workflows dưới dạng tệp .yml hoặc .yamlGitHub Docs
GitLab CI/CDPipeline được định nghĩa trong .gitlab-ci.yml ở thư mục gốc của kho mãGitLab Docs
Docker ComposeCác dịch vụ được mô tả trong compose.yaml (trước đây là docker-compose.yml)Docker Docs
AnsiblePlaybook và tệp biến được viết bằng YAMLAnsible Docs
KubernetesManifest chấp nhận JSON hoặc YAML; tài liệu và Helm chart dùng YAMLKubernetes

Ví dụ chuyển JSON sang YAML với các giá trị dễ gây lỗi

Kết quả YAML cho {"name":"api","version":"1.10","debug":false,"tags":["web","châu-âu"],"country":"NO"}
name: api
version: "1.10"
debug: false
tags:
  - web
  - châu-âu
country: "NO"

YAML mang lại gì

  • Chú thích bằng #
  • Diff ngắn hơn khi review mã
  • Không có dấu ngoặc nhọn, dấu phẩy hay dấu nháy ở hầu hết các dòng
  • Văn bản nhiều dòng với khối scalar |

Cần lưu ý

  • Thụt lề mang ý nghĩa, nên một dấu cách thừa làm đổi cấu trúc
  • Không được dùng tab để thụt lề
  • Chuỗi không có dấu nháy có thể bị đọc thành số hoặc boolean
  • Trình phân tích chậm hơn và kém đồng nhất hơn JSON

Ví dụ cho thấy vì sao chỉ tìm và thay các dấu ngoặc nhọn là chưa đủ. Phiên bản 1.10 là một chuỗi trong JSON; nếu viết trần trong YAML, nó sẽ bị đọc thành số 1.1. NO, mã ISO của Na Uy, sẽ bị các trình phân tích YAML 1.1 như PyYAML đọc thành false. Cả hai đều giữ dấu nháy, còn số và boolean thật vẫn để trần.

So sánh JSON và YAML

JSON

Dữ liệu JavaScript Object Notation (JSON)

JSON là định dạng văn bản gọn nhẹ cho dữ liệu có cấu trúc, được Douglas Crockford phổ biến đầu thập niên 2000 và chuẩn hóa thành RFC 8259 và ECMA-404. Định dạng biểu diễn object, mảng, chuỗi, số, boolean và null bằng cú pháp đơn giản, dễ đọc. JSON là định dạng mặc định cho API web, tệp cấu hình và trao đổi dữ liệu giữa các ứng dụng trong hầu hết ngôn ngữ lập trình. Định dạng không có sẵn chú thích, kiểu ngày tháng hay schema, và tệp lớn lồng nhiều cấp rất khó đọc nếu không có trình xem.

Nén
–
Độ trong suốt
–
Ảnh động
–
Ra mắt
2001 · Douglas Crockford
Công cụ chuyển đổi JSON

YAML

YAML

YAML ("YAML Ain't Markup Language") là định dạng dữ liệu thân thiện với con người, phát hành lần đầu năm 2001. Định dạng dùng thụt lề thay cho dấu ngoặc, hỗ trợ chú thích và là tập cha (superset) của JSON. YAML được dùng rộng rãi cho cấu hình trong Docker Compose, Kubernetes, GitHub Actions và nhiều ứng dụng khác. Do phụ thuộc vào khoảng trắng, chỉ một dấu cách đặt sai cũng có thể làm hỏng tệp, và một số giá trị như "no" hoặc ngày tháng có thể bị diễn giải ngoài ý muốn.

Nén
–
Độ trong suốt
–
Ảnh động
–
Ra mắt
2001 · Clark Evans, Ingy döt Net, Oren Ben-Kiki
Công cụ chuyển đổi YAML

Người ta chuyển JSON sang YAML khi dữ liệu được tạo tự động hoặc từ API phải trở thành tệp cấu hình mà con người bảo trì, review trong pull request và ghi chú bằng comment.

Câu hỏi thường gặp về chuyển JSON sang YAML

JSON có phải đã là YAML hợp lệ không?

Với YAML 1.2 thì có: bản sửa đổi năm 2009 được viết để mọi tài liệu JSON đều là tài liệu YAML hợp lệ. Bạn có thể dán JSON vào tệp .yaml và hầu hết công cụ đều chấp nhận. Việc chuyển đổi nhằm giúp dễ đọc hơn: kiểu khối không có dấu ngoặc nhọn, dấu nháy và dấu phẩy là thứ người review và người bảo trì sau mong đợi.

Vì sao một số giá trị trong YAML được đặt trong dấu ngoặc kép?

Vì nếu không có dấu nháy, YAML sẽ hiểu chúng thành kiểu dữ liệu khác. Chuỗi phiên bản như 1.10 sẽ thành số 1.1, còn yes hoặc off có thể thành giá trị boolean ở các trình phân tích cũ. Chuỗi trông giống số, ngày hoặc boolean cần có dấu nháy để vẫn là chuỗi, nên một bản chuyển đổi cẩn thận sẽ giữ lại chúng.

Có thể thêm chú thích sau khi chuyển đổi không?

Có, và đó là một lý do phổ biến để chuyển đổi. Viết # rồi đến ghi chú của bạn ở cuối dòng hoặc trên một dòng riêng. JSON không có cách nào giải thích vì sao một giá trị được đặt như vậy; YAML thì có, giúp việc review và bàn giao dễ hơn.

Vì sao file YAML báo lỗi ký tự tab?

Đặc tả YAML cấm dùng tab để thụt lề; chỉ dấu cách mới được tính. Công cụ chuyển đổi ghi bằng dấu cách, nhưng trình soạn thảo đặt chèn tab có thể làm hỏng tệp ở lần sửa tiếp theo. Hãy đặt trình soạn thảo dùng dấu cách cho tệp .yaml.

Kubernetes có chấp nhận manifest đã chuyển đổi không?

kubectl đọc được cả JSON lẫn YAML nên dữ liệu giống nhau; bản YAML chỉ đơn giản là thứ mà phần lớn tài liệu, Helm chart và code review sử dụng. Nếu sau này bạn cần JSON trở lại cho jq hoặc một lệnh gọi API, YAML sang JSON sẽ chuyển ngược lại.