JSON sang CSV API
Chuyển mảng JSON gồm object hoặc mảng thành CSV có dòng tiêu đề, tuỳ chọn dấu phân cách, trả về JSON hoặc file text/csv để tải về.
Gửi một mảng JSON qua trường json, dạng giá trị hoặc chuỗi JSON (cũng nhận body thô text/plain). Mỗi object thành một dòng và các key thành dòng tiêu đề; mảng của mảng được ghi thành các dòng thông thường. Object và mảng lồng nhau được ghi dưới dạng chuỗi JSON trong ô, giá trị chứa dấu phẩy, ngoặc kép hoặc xuống dòng được đặt trong ngoặc kép đúng chuẩn.
Các cột là hợp của mọi key trong tất cả object, theo thứ tự xuất hiện đầu tiên; giá trị thiếu sẽ là ô trống. Dùng delimiter để đổi dấu phân cách (ví dụ ; cho Excel cấu hình châu Âu) và header=false để bỏ dòng tiêu đề.
Mặc định API trả về JSON gồm csv và row_count; với format=csv, API trả thẳng nội dung CSV dạng text/csv, sẵn sàng lưu thành file. Body request tối đa 5 MB.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
json | body | array | có | Mảng object hoặc mảng, dạng giá trị JSON hoặc chuỗi JSON. Cũng nhận body thô text/plain. | |
delimiter | body|query | string | không | , | Dấu phân cách, ví dụ ; hoặc tab. |
header | body|query | boolean | không | true | Ghi dòng tiêu đề chứa tên cột. |
format | body|query | string | không | json | Đặt là csv để nhận nội dung CSV thô (text/csv) thay cho JSON. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/json-to-csv" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"json":[{"name":"Alice","age":30,"tags":["admin","dev"]},{"name":"Bob","age":25,"tags":[]}]}'const res = await fetch('https://apibox.io.vn/v1/json-to-csv', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"json": [
{
"name": "Alice",
"age": 30,
"tags": [
"admin",
"dev"
]
},
{
"name": "Bob",
"age": 25,
"tags": []
}
]
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/json-to-csv",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"json": [{"name": "Alice", "age": 30, "tags": ["admin", "dev"]}, {"name": "Bob", "age": 25, "tags": []}]},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/json-to-csv');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"json":[{"name":"Alice","age":30,"tags":["admin","dev"]},{"name":"Bob","age":25,"tags":[]}]}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"csv": "name,age,tags\nAlice,30,\"[\"\"admin\"\",\"\"dev\"\"]\"\nBob,25,[]",
"row_count": 2
}
Ứng dụng
- Xuất dữ liệu API hoặc kết quả truy vấn ra Excel, Google Sheets
- Tạo báo cáo CSV cho người dùng tải về trong ứng dụng web
- Chuyển log JSON hoặc sự kiện analytics thành bảng tính
- Chuẩn bị dữ liệu cho công cụ nhập liệu chỉ nhận CSV
Hỏi đáp
Object lồng nhau được xử lý thế nào?
Object và mảng lồng nhau được ghi dưới dạng chuỗi JSON trong ô, ví dụ ["admin","dev"].
Có tải trực tiếp file CSV được không?
Được. Thêm format=csv, body của response chính là nội dung CSV với Content-Type: text/csv.
Những cột nào được đưa vào CSV?
Mọi key xuất hiện trong bất kỳ object nào của mảng, theo thứ tự xuất hiện đầu tiên. Object thiếu key nào thì ô đó để trống.
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.