YAML ⇄ JSON API
Chuyển YAML sang JSON hoặc JSON sang YAML trong một API, hỗ trợ nhiều document và báo lỗi cú pháp kèm dòng, cột.
Gửi yaml để nhận JSON, hoặc gửi json để nhận YAML; chiều chuyển đổi được tự chọn và có thể chỉ định bằng to=json hoặc to=yaml. YAML cũng có thể gửi dạng body văn bản thô (ví dụ text/yaml) kèm to=json.
Khi chuyển YAML sang JSON, API trả về valid, giá trị đã parse trong json và số documents; file có nhiều document ngăn cách bởi --- sẽ trả về một mảng. YAML không hợp lệ trả về valid: false kèm error gồm thông báo, line và column thay vì lỗi HTTP.
Khi chuyển JSON sang YAML, trường json nhận giá trị JSON hoặc chuỗi JSON và kết quả nằm trong yaml; indent đặt độ thụt lề (1 đến 8, mặc định 2). Body request tối đa 5 MB.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
yaml | body | string | không | Nội dung YAML cần chuyển sang JSON. Có thể gửi dạng body văn bản thô kèm to=json. | |
json | body | object | không | Giá trị JSON hoặc chuỗi JSON cần chuyển sang YAML. | |
to | body|query | string | không | Định dạng đích: json hoặc yaml. Mặc định: json nếu có yaml, ngược lại là yaml. | |
indent | body|query | number | không | 2 | Độ thụt lề YAML (1-8) khi chuyển sang YAML. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/yaml" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"yaml":"name: APIBox\nversion: 1\nfeatures:\n - html\n - json\nenabled: true"}'const res = await fetch('https://apibox.io.vn/v1/yaml', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"yaml": "name: APIBox\nversion: 1\nfeatures:\n - html\n - json\nenabled: true"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/yaml",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"yaml": "name: APIBox\nversion: 1\nfeatures:\n - html\n - json\nenabled: true"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/yaml');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"yaml":"name: APIBox\\nversion: 1\\nfeatures:\\n - html\\n - json\\nenabled: true"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"valid": true,
"json": {
"name": "APIBox",
"version": 1,
"features": [
"html",
"json"
],
"enabled": true
},
"documents": 1
}
Ứng dụng
- Chuyển file YAML của Kubernetes, Docker Compose, GitHub Actions sang JSON
- Tạo file cấu hình YAML từ dữ liệu JSON
- Kiểm tra cú pháp YAML trong CI với vị trí lỗi chính xác
- Đọc đặc tả OpenAPI viết bằng YAML từ JavaScript
Hỏi đáp
Làm sao chọn chiều chuyển đổi?
Gửi yaml để nhận JSON, hoặc json để nhận YAML. Muốn rõ ràng hơn, thêm to=json hoặc to=yaml.
Có hỗ trợ YAML nhiều document không?
Có. Các document ngăn cách bởi --- được trả về dạng mảng trong json, còn documents cho biết số lượng.
Lỗi cú pháp YAML được báo thế nào?
API trả về valid: false kèm error.message, error.line và error.column.
API liên quan
Kiểm tra JSON
Kiểm tra cú pháp JSON, báo đúng dòng và cột bị lỗi, và validate dữ liệu theo JSON Schema (draft 4, 7, 2019-09 hoặc 2020-12).
{ }Định dạng JSON
Làm đẹp JSON với thụt lề 0-8 dấu cách hoặc tab, rút gọn (minify) hoặc sắp xếp key theo bảng chữ cái. Báo lỗi cú pháp kèm dòng và cột.
CSVCSV sang JSON
Chuyển CSV thành mảng object JSON theo dòng tiêu đề, tự nhận dấu phân cách, tự chuyển số và boolean, báo lỗi từng dòng.