Từ phản hồi API đến bảng tính
JSON là định dạng gốc của API web, nhưng những người cần dữ liệu lại thường làm việc trong bảng tính. Những trường hợp điển hình: danh sách đơn hàng lấy từ API cửa hàng mà kế toán muốn có trong Excel, bản ghi người dùng xuất từ cơ sở dữ liệu NoSQL để làm nhanh một bảng tổng hợp, sự kiện phân tích cần lọc trong Google Sheets, hoặc một loạt bản ghi cần nhập hàng loạt vào CRM chỉ nhận tải lên CSV. Tệp CSV cũng là định dạng dễ nhất để so sánh khác biệt, sắp xếp và grep trên dòng lệnh.
Công cụ nhận một mảng object và tạo ra mỗi object một hàng, mỗi trường một cột, với hàng tiêu đề ở trên cùng. Bộ đếm bên dưới ô nhập hiển thị số hàng được tạo ra, một cách kiểm tra nhanh so với số bản ghi bạn mong đợi.
Bảng được dựng như thế nào
Hàng và cột được suy ra từ chính dữ liệu, không cần schema:
- Cột là hợp của mọi khóa, theo thứ tự xuất hiện lần đầu. Nếu bản ghi đầu tiên có
idvàname, còn bản ghi thứ mười có thêmemail, tiêu đề sẽ kết thúc bằngemailvà chín hàng đầu để trống ô đó. - Object lồng nhau được làm phẳng bằng dấu chấm, nên
{"customer": {"address": {"city": "Lyon"}}}tạo ra cộtcustomer.address.city. Độ sâu bao nhiêu cũng được. - Một object đơn lẻ thay vì mảng được coi là bảng một hàng.
- Giá trị đơn thuần trong mảng, như
[1, 2, 3]hoặc danh sách chuỗi, được đưa vào một cột tênvalue. nulltrở thành ô trống, và boolean được ghi làtruevàfalse.
Một object lồng nhau rỗng như "meta": {} không có trường nào để làm phẳng, nên hoàn toàn không tạo ra cột nào.
Mảng bên trong bản ghi
Bảng tính không có khái niệm danh sách bên trong một ô, nên một mảng như "tags": ["red", "sale"] được ghi dưới dạng văn bản JSON của nó, ["red","sale"], trong một ô duy nhất. Điều đó giữ dữ liệu không mất mát: bạn có thể phân tích lại sau này hoặc tách bằng công thức bảng tính.
Nếu điều bạn thực sự cần là mỗi phần tử mảng một hàng, ví dụ mỗi dòng đơn hàng một hàng thay vì mỗi đơn hàng một hàng, hãy định hình lại dữ liệu trước. Trong phần lớn ngôn ngữ script, đó chỉ là một dòng map qua các bản ghi cha, sao chép ID của bản ghi cha vào từng bản ghi con. Đưa mảng đã định hình lại vào công cụ sẽ cho ra kết quả dạng bảng gọn gàng, đầy đủ.
Dấu nháy và ký tự phân tách
Một ô chỉ được bọc trong dấu nháy kép khi cần thiết: khi nó chứa ký tự phân tách, dấu nháy kép hoặc ký tự xuống dòng. Dấu nháy bên trong giá trị được nhân đôi theo yêu cầu của RFC 4180, nên 6" pipe được ghi thành "6"" pipe". Mọi giá trị khác được ghi trần, giúp tệp nhỏ và dễ đọc.
Ký tự phân tách quan trọng nhất khi tệp được mở bằng cách nhấp đúp trong Excel:
- Dấu phẩy là mặc định cho Google Sheets, LibreOffice, cơ sở dữ liệu, mô-đun
csvcủa Python và gần như mọi công cụ nhập dữ liệu. - Dấu chấm phẩy là thứ Excel mong đợi khi Windows được đặt theo khu vực dùng dấu phẩy làm dấu thập phân, bao gồm phần lớn châu Âu lục địa và Mỹ Latinh. Với tệp dùng dấu phẩy ở những khu vực đó, mọi hàng đều dồn vào cột A.
Khi còn phân vân, hãy dùng dấu phẩy và mở tệp qua chức năng nhập Data → From Text/CSV của Excel, cho phép bạn chọn ký tự phân tách một cách rõ ràng.
Đưa vào Excel gọn gàng
Một vài vấn đề xảy ra sau khi chuyển đổi, bên trong bảng tính, và rất dễ phòng tránh:
- Chữ có dấu biến thành ký hiệu lạ. Tệp là UTF-8 không có BOM, và một số phiên bản Excel đoán sai thành bảng mã cũ khi nhấp đúp. Hãy dùng chức năng nhập From Text/CSV và chọn UTF-8, hoặc mở tệp trong Google Sheets.
- Số 0 ở đầu và ID dài bị biến dạng. Excel chuyển
00042thành42và biến số từ 16 chữ số trở lên thành ký hiệu khoa học. Trong hộp thoại nhập, hãy đặt các cột đó thành Text. - Ngày đổi định dạng. Chuỗi ISO như
2026-03-01T10:00:00Zcó thể bị diễn giải một phần. Hãy nhập cột dưới dạng Text nếu bạn cần giá trị gốc.
Lưu ý rằng số lớn hơn 9.007.199.254.740.991 đã mất độ chính xác ngay khi JSON được phân tích trong trình duyệt, nên hãy lưu ID rất lớn dưới dạng chuỗi trong JSON nguồn nếu chúng phải được giữ chính xác.
Kiểm tra đầu vào trước
Nếu công cụ báo JSON không hợp lệ, hãy dán dữ liệu vào định dạng JSON, công cụ chỉ ra chính xác dòng và cột có vấn đề. Dữ liệu từ tệp log thường ở định dạng JSON Lines, mỗi dòng một object và không có dấu ngoặc bao quanh; hãy bọc nó trong [ và ] và thêm dấu phẩy giữa các dòng để thành một mảng hợp lệ. Chuyển đổi chiều ngược lại có sẵn ở chuyển CSV sang JSON. Mọi xử lý diễn ra trong trang, nên không có gì bạn dán vào được gửi đi đâu cả.