Công cụ cho lập trình viên

Bộ chuyển đổi JSON ↔ YAML

Chuyển JSON sang YAML hoặc YAML sang JSON cục bộ, với mảng lồng nhau, chuỗi và số chính xác.

Dữ liệu nhập

Chuyển đổi dữ liệu YAML 1.2. Không giữ chú thích và định dạng. Giới hạn đầu vào: 2 MiB.

Kết quả

Chuyển JSON và YAML với kiểu dữ liệu mong muốn

Chuyển dữ liệu tương thích JSON giữa JSON nghiêm ngặt và cú pháp lõi YAML 1.2. Bộ chuyển giữ token số JSON, kể cả số nguyên lớn, thay vì làm tròn trước qua kiểu số JavaScript. Công cụ chuyển giá trị dữ liệu, không chuyển định dạng nguồn hay lược đồ cấu hình ứng dụng. Chú thích, neo và lựa chọn trình bày YAML không được giữ khi chuyển sang JSON.

Từng bước thực hiện

  1. Dán văn bản hoặc mở tệp JSON, YAML, YML hay TXT UTF-8 trên thiết bị. Chọn rõ JSON → YAML hoặc YAML → JSON; mở tệp không tự phát hiện chiều chuyển.
  2. Chọn hai hoặc bốn dấu cách và có thể sắp xếp khóa đối tượng. Xử lý rồi giải quyết lỗi cú pháp hoặc tính năng không được hỗ trợ. Sắp xếp đệ quy theo thứ tự từ vựng, phân biệt chữ hoa/chữ thường; thứ tự mảng không đổi.
  3. Kiểm tra chuỗi, giá trị logic, null và số rồi sao chép, in hoặc tải converted.yaml hay converted.json. Nếu sửa đầu vào hoặc tùy chọn, xử lý lại vì đầu ra cũ bị xóa. Kiểm tra tệp đã chuyển bằng ứng dụng sẽ dùng nó.

Cài đặt và giới hạn

Kiểu và quy tắc tài liệu
Dùng một tài liệu YAML 1.2 với khóa chuỗi duy nhất và giá trị tương thích JSON. Đặt nháy quanh mã trông giống số như "00123"; YAML 00123 không nháy thành số 123. yes, on và văn bản ngày ISO không nháy vẫn là chuỗi theo quy tắc lõi.
Bí danh và tính năng không hỗ trợ
Bí danh không có chu trình được mở rộng thành giá trị lặp. Chu trình, khóa trùng, khóa không phải chuỗi, thẻ không hỗ trợ và số không hữu hạn bị từ chối. Khóa ghép YAML không được áp dụng: <<: *base thành thuộc tính "<<" thông thường, nên hãy mở rộng các trường muốn kế thừa trước.
Dung lượng và độ phức tạp
Đầu vào giới hạn ở 2 MiB văn bản UTF-8: 2,097,152 byte. Đầu ra giới hạn ở 8 MiB. Xử lý cũng dừng khi vượt 128 cấp lồng, 200,000 nút giá trị hoặc 100 lần truy cập bí danh; tệp nhỏ vẫn có thể vượt giới hạn này.

Ví dụ thực hành

Tải types-example.json và chọn JSON → YAML với thụt lề hai dấu cách, tắt sắp xếp. Chuyển rồi so sánh types-example.yaml. id và word trong dấu nháy vẫn là chuỗi, enabled vẫn là false, retries và large vẫn là số.

Tải các tệp ví dụ

Dữ liệu đầu vào mẫu

{"id":"00123","word":"yes","enabled":false,"retries":3,"large":9007199254740993}

Kết quả dự kiến

"id": "00123"
"word": "yes"
"enabled": false
"retries": 3
"large": 9007199254740993

Giờ mở types-example.yaml, chuyển rõ sang YAML → JSON và xử lý lại. id phải vẫn là "00123" và số nguyên lớn vẫn là 9007199254740993. Bỏ nháy quanh 00123 trong YAML rồi lặp lại: giá trị thành số 123. Sự khác biệt này quan trọng với mã định danh dù cả hai tệp hợp lệ.

Câu hỏi và khắc phục sự cố

Tại sao JSON có khóa trùng lỗi ở đây nhưng định dạng được nơi khác?

JSON Formatter có thể cảnh báo và giữ khóa trùng. Bộ chuyển này từ chối vì chuyển thành ánh xạ có thể đổi ý nghĩa. Quyết định giá trị nào thuộc nguồn và xóa trùng trước khi chuyển.

Chú thích và kế thừa YAML có được giữ không?

JSON không có chú thích hay neo. Bí danh được mở rộng, còn khóa ghép được xuất nguyên nghĩa thay vì áp dụng kế thừa. Mở rộng dữ liệu mong muốn rồi kiểm tra kết quả; chuyển đổi không viết lại trung thực mọi tính năng YAML.

Số lớn có an toàn trong ứng dụng đích không?

Bộ chuyển giữ cách viết số được hỗ trợ và giá trị số nguyên lớn nhưng chương trình sau có thể phân tích với độ chính xác thấp hơn. Dùng chuỗi có nháy khi giá trị trông giống số là mã định danh, và thử bộ phân tích của ứng dụng đích.