Cách Chuyển file JSON sang CSV để dùng trong Excel và Google Sheets
JSON và CSV: Mỗi cái một việc
JSON và CSV được xây dựng cho những thế giới hoàn toàn khác nhau. JSON (JavaScript Object Notation) đại diện cho dữ liệu có cấu trúc, phân cấp. Nó xử lý các đối tượng lồng nhau, mảng trong mảng, và các kiểu dữ liệu hỗn hợp một cách dễ dàng, đó là lý do tại sao nó là tiêu chuẩn cho các API và file cấu hình ứng dụng. CSV (Comma-Separated Values) thì ngược lại: một bảng phẳng, đơn giản. Mỗi hàng phải có cùng số cột. Không có lồng ghép. Sự khác biệt cơ bản này có nghĩa là bạn không thể chỉ đổi tên một file .json thành .csv và mong nó hoạt động được. Khi bạn lấy dữ liệu từ một REST API, chẳng hạn như danh sách 500 hồ sơ khách hàng từ một CRM, bạn gần như luôn nhận được nó dưới dạng JSON. Một bản ghi khách hàng duy nhất có thể trông như thế này: {"id": 1042, "name": "Sara Okonkwo", "email": "sara@example.com", "orders": [{"id": 88, "total": 49.99}]} Excel và Google Sheets không thể phân tích file đó thành một bảng gọn gàng. Chúng cần các hàng phẳng. Chuyển đổi JSON sang CSV chính là cầu nối cho phép các nhà phân tích, nhà tiếp thị và đội ngũ vận hành đưa dữ liệu API vào các công cụ bảng tính mà họ sử dụng hàng ngày. Việc chuyển đổi rất dễ dàng nếu JSON của bạn là một danh sách các đối tượng đơn giản. Nó trở nên khó hơn nhiều khi có sự lồng ghép, và đó là nơi hầu hết mọi người bị mắc kẹt.
Xử lý JSON lồng nhau khi chuyển đổi: Chuyện gì sẽ xảy ra?
Đây là phần mà hầu hết các bài hướng dẫn đều bỏ qua, và nó gây ra những cơn đau đầu thực sự. Khi JSON của bạn chứa các đối tượng hoặc mảng lồng nhau, bất kỳ công cụ chuyển đổi nào—kể cả CocoConvert—đều phải quyết định cách làm phẳng nó. Có một vài cách để thực hiện việc này. Một chiến lược là làm phẳng các khóa lồng nhau bằng ký pháp dấu chấm. Một trường như `address.city` sẽ trở thành một tiêu đề cột, và giá trị sẽ được thả ngay vào ô đó. Đây là một giải pháp tuyệt vời cho việc lồng ghép đơn giản, một cấp. Một cách tiếp cận khác là "chuỗi hóa" giá trị lồng nhau, trong đó toàn bộ đối tượng hoặc mảng được nhồi vào một ô duy nhất dưới dạng một chuỗi JSON. Điều này bảo toàn tất cả dữ liệu, nhưng về cơ bản là không thể đọc được trong bảng tính nếu không xử lý thêm. Một chiến lược thứ ba, và thường là hữu ích nhất, là mở rộng các mảng thành nhiều hàng. Nếu một khách hàng có ba đơn hàng, công cụ chuyển đổi sẽ tạo ra ba hàng riêng biệt cho khách hàng đó, sao chép các trường cha cho mỗi đơn hàng. Điều này làm cho dữ liệu có thể sử dụng ngay lập tức trong bảng tính, nhưng nó cũng có thể làm cho file của bạn trở nên khổng lồ. CocoConvert mặc định làm phẳng bằng ký pháp dấu chấm cho các đối tượng lồng nhau và chuỗi hóa các mảng lồng nhau. Vì vậy, nếu JSON của bạn có một đối tượng hai cấp như {"shipping": {"method": "express", "days": 2}}, bạn sẽ nhận được các cột cho `shipping.method` và `shipping.days`. Nhưng nếu nó có một mảng, toàn bộ mảng đó sẽ kết thúc dưới dạng một chuỗi trong một ô. Đối với dữ liệu lồng nhau sâu—ba cấp trở lên, hoặc mảng các đối tượng—bạn gần như chắc chắn sẽ cần phải xử lý trước JSON bằng một script để có được một file CSV sạch sẽ. Không có công cụ chuyển đổi trực tuyến nào có thể xử lý một cách kỳ diệu mọi kiểu lồng ghép. Bạn tuyệt đối nên thử nghiệm với một mẫu nhỏ trước khi ném hàng ngàn bản ghi vào đó.
Chuyển đổi JSON sang CSV bằng CocoConvert
Khi bạn có một file JSON đơn giản—một mảng phẳng các đối tượng hoặc lồng ghép một cấp đơn giản—việc sử dụng CocoConvert rất nhanh và không cần cài đặt. Quá trình rất đơn giản. Đầu tiên, hãy truy cập /convert/json-to-csv. Bạn sẽ thấy hộp tải lên và các tùy chọn đầu ra. Tải lên file .json của bạn. Gói miễn phí của CocoConvert xử lý các file lên đến 50 MB. Nếu file của bạn lớn hơn, bạn sẽ phải chia nhỏ nó. Một dòng lệnh Python nhanh gọn như `json.dump(data[:5000], open('chunk1.json','w'))` là hoàn hảo cho việc này. Tiếp theo, chọn dấu phân cách của bạn. Dấu phẩy là tiêu chuẩn, nhưng nếu bạn ở một khu vực mà Excel mong đợi dấu chấm phẩy (đúng vậy, tôi đang nói đến các bạn ở Đức và Pháp đấy), bạn cần phải chuyển đổi cài đặt này trước khi download. Cài đặt nhỏ này làm rất nhiều người bối rối. Luôn bật tùy chọn "bao gồm một hàng tiêu đề". Bảng tính cần hàng đầu tiên đó cho tên cột. Sau đó, chỉ cần nhấp vào "Chuyển đổi." Một file 10.000 hàng thường mất chưa đến 10 giây. Sau đó, bạn có thể download file .csv mới coóng của mình. Đây là một mẹo chuyên nghiệp: nếu các khóa JSON của bạn có dấu cách hoặc ký tự đặc biệt, như "first name" hoặc "unit$price", chúng sẽ trở thành tiêu đề cột của bạn y như vậy. Excel có thể xử lý điều này, nhưng việc viết công thức sẽ trở nên khó chịu vì bạn phải sử dụng chữ cái của cột thay vì các tham chiếu có cấu trúc. Sẽ sạch sẽ hơn nhiều nếu bạn đổi tên các khóa trong JSON trước khi chuyển đổi, hoặc chỉ cần sửa tên cột trong Excel ngay sau khi nhập. Điều này sẽ giúp bạn đỡ đau đầu về sau.
Mở file CSV đúng cách trong Excel
Tải xuống một file CSV chỉ là một nửa công việc. Cách bạn mở nó trong Excel tạo ra sự khác biệt giữa một bảng sạch sẽ và một mớ dữ liệu vô dụng trong một cột duy nhất. Dù làm gì, bạn cũng đừng chỉ nháy đúp chuột vào file. Phương pháp đáng tin cậy duy nhất là sử dụng trình hướng dẫn nhập. Trong Excel 365 và Excel 2019, hãy tìm nó trong Dữ liệu → Lấy Dữ liệu → Từ Text/CSV. Chọn file của bạn, và Excel sẽ hiển thị một bản xem trước. Đây là cơ hội để bạn xác nhận dấu phân cách. Nếu nó không khớp với những gì bạn đã chọn trong quá trình chuyển đổi, tất cả dữ liệu của bạn sẽ bị nhồi vào cột A. Bất cứ ai đã từng vật lộn với việc nhập CSV đều hiểu quá rõ nỗi đau này. Hãy cẩn thận với định dạng ngày tháng. Nếu JSON của bạn sử dụng chuỗi ISO 8601 (như `2025-11-03T14:22:00Z`), Excel thường nhập chúng dưới dạng văn bản thuần túy. Bạn có thể khắc phục điều này. Chọn cột, đi tới Dữ liệu → Text to Columns, chọn Delimited, nhấp Next hai lần, và sau đó đặt định dạng dữ liệu cột thành Date (YMD). Thao tác này sẽ chuyển đổi văn bản thành các giá trị ngày tháng thực sự mà bạn có thể sắp xếp và lọc đúng cách. Đối với các file lớn, chẳng hạn 200.000 hàng, Excel sẽ nhập nó, nhưng nó sẽ chạy ì ạch. Pivot tables và VLOOKUPs sẽ chậm một cách đau khổ. Thay vào đó, hãy sử dụng Power Query (Dữ liệu → Lấy & Chuyển đổi Dữ liệu → Từ CSV). Nó xử lý các bộ dữ liệu lớn tốt hơn nhiều mà không làm Excel trở nên không thể sử dụng được. Và hãy lưu ý đến giới hạn cứng của Excel: 1.048.576 hàng. Nếu JSON của bạn tạo ra một file CSV có nhiều hàng hơn thế, Excel sẽ âm thầm loại bỏ mọi thứ vượt quá giới hạn. Nếu bạn sắp đạt đến con số đó, hãy chia nhỏ file nguồn của bạn trước khi bắt đầu chuyển đổi.
Nhập file CSV vào Google Sheets
Google Sheets thường xử lý việc nhập CSV tốt hơn Excel, nhưng một vài cài đặt là rất quan trọng. Quá trình này rất đơn giản: mở một trang tính, vào Tệp → Nhập, và tải lên file CSV của bạn. Trong hộp thoại xuất hiện, bạn có một vài lựa chọn. Luôn đặt "Vị trí nhập" thành một trang tính mới để tránh ghi đè lên dữ liệu hiện có. Đặt "Loại dấu phân cách" thành Dấu phẩy (hoặc Tùy chỉnh cho dấu chấm phẩy). Đây là cài đặt quan trọng nhất: "Chuyển đổi văn bản thành số, ngày và công thức." Nếu dữ liệu của bạn có mã sản phẩm trông giống như số (ví dụ: `00847`), bạn phải bỏ chọn hộp này để giữ lại các số không ở đầu. Nếu không, Google Sheets sẽ "sửa" dữ liệu của bạn một cách rất nhiệt tình bằng cách biến nó thành số 847. Nếu bạn để bật chuyển đổi tự động, Sheets thực hiện khá tốt việc phân tích ngày tháng ISO thành định dạng gốc của nó. Nó cũng chuyển đổi các chuỗi số thành số, điều này thường ổn nhưng có thể là vấn đề đối với các mã định danh đặc biệt đó. Nếu bạn làm việc này thường xuyên, chẳng hạn như lấy một file xuất JSON mới vào mỗi thứ Hai, đừng làm thủ công. Hãy tìm hiểu cách sử dụng hàm `IMPORTDATA` của Google Sheets hoặc một Google Apps Script. `IMPORTDATA` bị giới hạn ở các URL công khai, làm cho nó trở nên bất khả thi đối với dữ liệu riêng tư. Apps Script mạnh mẽ hơn nhiều; nó có thể lấy dữ liệu từ một điểm cuối JSON được bảo vệ và ghi trực tiếp vào một trang tính, bỏ qua hoàn toàn bước CSV. Nhưng đối với các công việc làm một lần hoặc cho các nhóm không có lập trình viên có sẵn, việc nhập thủ công bằng một file từ CocoConvert tại /convert/json-to-csv là cách nhanh nhất để hoàn thành công việc. Chỉ mất hai phút và không cần code.
Xử lý các lỗi chuyển đổi thường gặp
Bạn sẽ gặp phải một vài vấn đề phổ biến khi chuyển đổi JSON sang CSV. Đây là những gì cần chú ý. Các khóa không nhất quán giữa các đối tượng. JSON rất linh hoạt. Một đối tượng trong một mảng có thể có trường `phone` trong khi đối tượng tiếp theo thì không. Các công cụ chuyển đổi như CocoConvert xử lý điều này bằng cách tạo một cột cho mỗi khóa duy nhất được tìm thấy trong toàn bộ bộ dữ liệu. Ở những nơi một khóa bị thiếu cho một bản ghi, ô đó sẽ được để trống. Đây là cách làm đúng, nhưng hãy cẩn thận: một file nguồn lộn xộn với 30 cấu trúc đối tượng hơi khác nhau có thể dẫn đến một file CSV với 80 cột, hầu hết trong số đó đều trống. Hãy dọn dẹp lược đồ JSON của bạn trước khi chuyển đổi. Unicode và các ký tự đặc biệt. Các file JSON gần như luôn là UTF-8. Nếu dữ liệu của bạn bao gồm các ký tự không phải Latin (như tiếng Ả Rập, tiếng Trung, hoặc các chữ có dấu), bạn phải yêu cầu Excel mong đợi chúng. Khi bạn nhập qua Dữ liệu → Lấy Dữ liệu → Từ Text/CSV, hãy tìm cài đặt "Nguồn gốc File" trong hộp thoại xem trước và thay đổi nó thành `65001: Unicode (UTF-8)`. Nếu bạn quên điều này, tất cả các ký tự đặc biệt của bạn sẽ biến thành ký tự rác rưởi (lỗi mojibake). Số rất lớn. Điều này tinh vi nhưng có sức phá hủy lớn. JSON có thể xử lý các số khổng lồ với độ chính xác hoàn hảo. Nhưng bảng tính thì không thể. Cả Excel và Google Sheets đều sử dụng toán học dấu phẩy động 64-bit, có nghĩa là chúng bắt đầu làm tròn các số nguyên lớn sau 9.007.199.254.740.992 (hoặc 2^53). Nếu JSON của bạn chứa một số lớn hơn, như 9007199254740993, nó sẽ bị làm tròn một cách âm thầm khi nhập. Nếu bạn đang xử lý các ID số nguyên lớn từ cơ sở dữ liệu, lựa chọn an toàn duy nhất của bạn là lưu chúng dưới dạng chuỗi trong JSON *trước khi* bạn chuyển đổi. Các mảng rỗng và giá trị null. Một giá trị `null` trong JSON sẽ được chuyển đổi chính xác thành một ô trống trong CSV. Một mảng rỗng `[]` được xử lý khác nhau bởi các công cụ khác nhau. CocoConvert biến nó thành một chuỗi rỗng, đây là lựa chọn tốt nhất cho bảng tính và tránh nhầm lẫn.
Khi nào một công cụ chuyển đổi không phải là lựa chọn phù hợp
Các công cụ chuyển đổi trực tuyến là hoàn hảo cho các công việc làm một lần và kiểm tra nhanh, đặc biệt là khi JSON của bạn đã phẳng. Nhưng chúng không phải là công cụ phù hợp cho mọi công việc. Nếu việc chuyển đổi của bạn là một phần của một quy trình tự động hóa—một công việc ETL hàng đêm, xử lý dữ liệu trong CI/CD, hoặc bất cứ thứ gì cần chạy mà không có bạn—bạn phải sử dụng một giải pháp kịch bản. Một công cụ trực tuyến đơn giản là không đủ tin cậy cho việc tự động hóa. Thư viện pandas của Python là tiêu chuẩn ngành ở đây; bạn có thể đọc JSON với `pd.read_json()`, làm phẳng nó với `pd.json_normalize()`, và ghi ra CSV với `.to_csv()` chỉ trong vài dòng. Đối với các pháp sư dòng lệnh, `jq` là một giải pháp thay thế cực kỳ mạnh mẽ trong môi trường Unix: `jq -r '(.[0] | keys_unsorted) as $keys | $keys, (.[] | [.[$keys[]]] | @csv)' input.json > output.csv` sẽ hoàn thành công việc cho các mảng phẳng. Khi JSON của bạn lồng nhau sâu (ba cấp trở lên, hoặc chứa các mảng đối tượng), không có công cụ chuyển đổi trực tuyến nào sẽ cho bạn một file CSV sạch sẽ ngay lập tức. Vấn đề nằm ở cấu trúc; bạn cần viết một kịch bản tùy chỉnh hiểu lược đồ cụ thể của mình để làm phẳng nó đúng cách. Một định dạng khác cần biết là JSON Lines (.jsonl), trong đó mỗi dòng là một đối tượng JSON riêng biệt. CocoConvert xử lý các file này một cách hoàn hảo, vì vậy bạn có thể tải chúng lên y như vậy. Chỉ cần đảm bảo file của bạn không trộn lẫn JSON thông thường và JSON Lines, nếu không bạn sẽ cần phải dọn dẹp nó trước. Đối với mọi thứ khác? Một file xuất JSON từ một nền tảng SaaS, một phản hồi API bạn cần trong bảng tính, một file cấu hình bạn muốn xem dưới dạng bảng—hãy đi thẳng đến /convert/json-to-csv. Tải lên file của bạn, và bạn sẽ có một file CSV sạch sẽ trong vòng chưa đầy một phút.