UltKit

Chuyển YAML sang JSON

Chuyển file cấu hình YAML, đặc tả OpenAPI và file CI thành JSON mà mọi trình phân tích, API hay trình kiểm tra schema đều đọc được. Tải lên file .yaml hoặc .yml và tải xuống JSON đã thụt lề.

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

    Tải lên file YAML

    Thêm file .yaml hoặc .yml, tối đa 20 file cùng lúc, mỗi file không quá 95 MB. Tên gốc được giữ nguyên; file JSON có cùng tên nhưng đổi phần đuôi.

  2. 2

    Chọn thụt lề hoặc thu gọn

    Tùy chọn Định dạng dễ đọc đang bật, giúp JSON được thụt lề để dễ đọc và dễ review code. Hãy tắt tùy chọn này trong Cài đặt nâng cao nếu bạn cần file một dòng để dán vào nội dung request.

  3. 3

    Chuyển đổi và sử dụng

    Bấm Chuyển sang JSON, tải xuống rồi đưa file cho API, trình kiểm tra hoặc script đang cần nó.

Vì sao lập trình viên chuyển YAML sang JSON

YAML được viết cho con người: dùng thụt lề thay cho dấu ngoặc nhọn, có chú thích, hầu hết chuỗi không cần dấu nháy. Vì vậy đây là định dạng của manifest Kubernetes, workflow GitHub Actions, file Docker Compose và đặc tả OpenAPI mà các nhóm chỉnh sửa bằng tay. JSON được viết cho chương trình. Ngôn ngữ nào cũng có trình phân tích JSON trong thư viện chuẩn, trình duyệt đọc được JSON sẵn, và hầu hết HTTP API chỉ nhận JSON.

Vì vậy việc chuyển đổi diễn ra ở ranh giới giữa hai bên. Kỹ sư nền tảng đưa manifest qua jq, vốn chỉ đọc JSON. Lập trình viên backend gửi đặc tả OpenAPI cho trình tạo code cần JSON. Người kiểm thử nạp dữ liệu mẫu viết bằng YAML vào bộ test JavaScript. Trong mọi trường hợp, YAML vẫn là nguồn gốc còn JSON là sản phẩm được tạo ra. Với cả thư mục feed hoặc dữ liệu xuất thay vì file cấu hình, XML sang JSON xử lý định dạng đánh dấu cũ hơn theo cách tương tự.

YAML và JSON đã cùng phát triển như thế nào

YAML được Clark Evans đề xuất lần đầu
2001
YAML 1.2 biến JSON thành tập con của YAML
2009
RFC 8259, chuẩn JSON hiện hành
2017
Bản sửa đổi YAML 1.2.2 được công bố
2021

Các tính năng chỉ có ở YAML sẽ ra sao trong JSON

Anchor (&defaults) và các alias (*defaults) cho phép YAML dùng lại một khối. JSON không có tham chiếu, nên mỗi alias được thay bằng bản sao đầy đủ của khối được gắn anchor.

  • JSON có thể dài hơn YAML đáng kể
  • Merge key (<<: *defaults) cũng được mở rộng theo cách tương tự
Một cấu hình YAML nhỏ dưới dạng JSON dễ đọc
{
  "service": "billing",
  "replicas": 3,
  "ports": [8080, 9090],
  "env": {
    "LOG_LEVEL": "info",
    "REGION": "NO"
  }
}

Thông tin về định dạng YAML và 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

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

Người ta chuyển YAML sang JSON khi cấu hình hoặc đặc tả viết cho con người phải được đưa vào máy xử lý: request API, trình kiểm tra schema hoặc công cụ không có trình phân tích YAML.

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

Vì sao phải chuyển YAML sang JSON khi cả hai chứa cùng dữ liệu?

Vì nhiều công cụ chỉ đọc được một trong hai định dạng. Trình đọc JSON có sẵn trong mọi ngôn ngữ lập trình và trình duyệt, còn YAML cần thêm thư viện. Nội dung request của REST API, trình kiểm tra JSON Schema, jq, cũng như các file như package.json hay manifest.json của tiện ích trình duyệt đều yêu cầu JSON.

Chú thích trong file YAML sẽ ra sao?

Chúng bị loại bỏ. RFC 8259 không có cú pháp chú thích cho JSON, nên các dòng bắt đầu bằng # không có chỗ để giữ lại. Hãy giữ file YAML làm nguồn có chú thích và coi JSON là bản sao được tạo ra, có thể tạo lại bất cứ lúc nào.

Vì sao NO hoặc off lại thành false?

Các trình phân tích theo YAML 1.1 đọc yes, no, on và off thành giá trị boolean, nên mã quốc gia như NO của Na Uy có thể thành false. YAML 1.2 chỉ coi true và false là boolean, nhưng không phải công cụ nào cũng theo chuẩn này. Hãy đặt các giá trị đó trong dấu ngoặc kép ở file YAML, ví dụ "NO", và chúng sẽ vẫn là chuỗi trong JSON.

Có chuyển được template CloudFormation viết bằng YAML không?

AWS CloudFormation chấp nhận cả hai định dạng, nhưng các thẻ rút gọn như !Ref và !GetAtt chỉ có trong YAML. Mẫu JSON viết chúng dưới dạng hàm đầy đủ, {"Ref": "MyBucket"} hoặc {"Fn::GetAtt": [...]}. Hãy viết lại thẻ rút gọn sang dạng đầy đủ trước khi chuyển để mẫu JSON vẫn hợp lệ.

Làm sao chuyển theo chiều ngược lại?

Dùng JSON sang YAML. Đây là chiều chuyển thường gặp khi phản hồi API hoặc file được tạo tự động cần trở thành file cấu hình dễ đọc trong repository.