Công cụ chuyển đổi CSV sang JSON - Trình chuyển đổi tệp trực tuyến miễn phí
Chuyển đổi CSV sang JSON và JSON sang CSV ngay lập tức trên trình duyệt của bạn. Chuyển đổi dữ liệu an toàn, nhanh chóng với xem trước và tải xuống. Không yêu cầu tải lên.
Công cụ Chuyển đổi Tệp CSV/JSON
Dễ dàng chuyển đổi giữa các định dạng CSV và JSON. Tải tệp lên, xem trước dữ liệu và tải xuống kết quả đã chuyển đổi.
Công cụ Chuyển đổi CSV sang JSON
Công cụ Chuyển đổi JSON sang CSV
Tài liệu hướng dẫn
Trình chuyển đổi CSV sang JSON là gì?
Trình chuyển đổi CSV sang JSON là công cụ chuyển dữ liệu từ định dạng CSV (các giá trị được phân tách bằng dấu phẩy) sang định dạng JSON (ký hiệu đối tượng JavaScript), hoặc ngược lại. Trình chuyển đổi này hoạt động hoàn toàn trong trình duyệt web. Tệp đã tải lên không bao giờ được gửi đến máy chủ, nên dữ liệu vẫn nằm trên thiết bị của người dùng.
CSV là định dạng văn bản thuần túy dùng để lưu các bảng, chẳng hạn như bảng tính được xuất từ Excel hoặc Google Sheets. JSON là định dạng văn bản được xây dựng từ các cặp khóa-giá trị, được sử dụng rộng rãi để truyền dữ liệu giữa các ứng dụng web và API. Vì hai định dạng này tổ chức dữ liệu theo cách khác nhau, việc chuyển đổi qua lại cần một tập hợp quy tắc được xác định như dưới đây.
Cách chuyển đổi CSV sang JSON
- Nhấp vào "Tải tệp CSV lên" và chọn một tệp
.csvtrên thiết bị. - Công cụ hiển thị bản xem trước nội dung thô của tệp.
- Nhấp vào "Chuyển đổi sang JSON". Công cụ đọc dòng đầu tiên làm tiêu đề cột và chuyển mỗi dòng còn lại thành một đối tượng JSON.
- Kết quả xuất hiện trong bản xem trước đầu ra, được định dạng bằng thụt lề.
- Nhấp vào "Tải JSON xuống" để lưu dưới dạng tệp
.json, hoặc "Sao chép JSON" để sao chép văn bản.
Cách chuyển đổi JSON sang CSV
- Nhấp vào "Tải tệp JSON lên" và chọn một tệp
.json. Tệp phải chứa một mảng JSON gồm các đối tượng, chẳng hạn[{"Name":"Ann"},{"Name":"Bo"}]. - Công cụ hiển thị bản xem trước văn bản JSON thô.
- Nhấp vào "Chuyển đổi sang CSV". Công cụ thu thập mọi khóa được sử dụng trong tất cả các đối tượng và chuyển mỗi khóa thành một cột.
- Kết quả xuất hiện trong bản xem trước đầu ra dưới dạng văn bản CSV.
- Nhấp vào "Tải CSV xuống" để lưu dưới dạng tệp
.csv, hoặc "Sao chép CSV" để sao chép văn bản.
Không có giới hạn tải lên do máy chủ áp dụng, vì không dữ liệu nào rời khỏi trình duyệt. Tuy nhiên, một tệp rất lớn vẫn có thể làm chậm thẻ trình duyệt, vì toàn bộ tệp được giữ trong bộ nhớ trong khi chuyển đổi.
Quy tắc chuyển đổi CSV sang JSON
Công cụ chuyển đổi đọc hàng đầu tiên của tệp làm tên các cột. Mỗi hàng tiếp theo trở thành một đối tượng JSON, với tên cột làm khóa. Một hàng có nhiều giá trị hơn số tiêu đề sẽ nhận thêm các khóa được đặt tên theo vị trí tuyệt đối của chúng trong hàng; vì vậy với 3 tiêu đề, giá trị thứ tư có khóa field_4, giá trị thứ năm có khóa field_5, v.v., nghĩa là không dữ liệu nào bị loại bỏ. Một hàng có ít giá trị hơn sẽ nhận chuỗi rỗng cho các khóa bị thiếu. Nếu hai tiêu đề có cùng tên, tiêu đề thứ hai được đổi tên bằng hậu tố, nên a, a trở thành các khóa a và a_2.
Công cụ chuyển đổi tuân theo các quy tắc CSV được định nghĩa trong RFC 4180, tiêu chuẩn kỹ thuật của định dạng này. Dấu phẩy bên trong một trường chỉ được xem là giá trị thuộc trường đó, không phải dấu ngắt cột, nếu trường được bao quanh bằng dấu ngoặc kép, chẳng hạn "Smith, John". Dấu xuống dòng bên trong dấu ngoặc kép được giữ như một phần của giá trị thay vì được xem là hàng mới. Hai dấu ngoặc kép bên trong một trường được đặt trong dấu ngoặc kép biểu thị một ký tự ngoặc kép nguyên văn.
Chỉ dấu phẩy được nhận diện là dấu phân tách cột; công cụ không phát hiện hoặc hỗ trợ dấu chấm phẩy, ký tự tab hay các dấu phân tách khác.
Mỗi giá trị được kiểm tra và chuyển đổi thành một kiểu:
- Một giá trị được viết dưới dạng số thuần túy, chẳng hạn
42hoặc-3.5, trở thành một số JSON. - Văn bản
truehoặcfalse(không phân biệt kiểu chữ) trở thành giá trị Boolean JSON. - Mọi giá trị khác vẫn là chuỗi JSON, bao gồm các ô trống, được chuyển thành chuỗi rỗng.
- Một số có số 0 đứng đầu, chẳng hạn
00512, vẫn là chuỗi, vì số 0 đứng đầu thường có ý nghĩa, như trong mã ZIP hoặc số ID. - Một số chỉ được chấp nhận nếu khi ghi lại cho ra chính xác cùng văn bản. Các số nguyên dài lớn hơn 9,007,199,254,740,991, là số nguyên lớn nhất mà một số JavaScript có thể lưu chính xác, thường không vượt qua được bước kiểm tra đó và vẫn là chuỗi, nên không có chữ số nào bị mất.
- Một giá trị mà tệp đã đặt trong dấu ngoặc kép luôn được giữ dưới dạng chuỗi, ngay cả khi trông giống một số, vì việc đặt trong dấu ngoặc kép được xem là tác giả đánh dấu giá trị đó là văn bản.
Các dòng trống trong tệp được bỏ qua và không tạo ra các đối tượng rỗng.
Quy tắc chuyển đổi JSON sang CSV
Công cụ chuyển đổi xem xét mọi đối tượng trong mảng và thu thập toàn bộ tập hợp khóa được sử dụng trong tất cả các đối tượng đó. Các khóa này trở thành tiêu đề cột CSV theo thứ tự xuất hiện lần đầu. Nếu một đối tượng thiếu một khóa mà đối tượng khác có, ô tương ứng sẽ để trống thay vì tạo lỗi.
JSON sang CSV không chuyển các đối tượng lồng nhau thành các cột riêng biệt. Một giá trị bản thân là đối tượng hoặc mảng được ghi lại dưới dạng văn bản JSON trong một ô duy nhất; vì vậy {"b": 1} trở thành ô {"b":1} và [1, 2] trở thành ô [1,2]. Không có dữ liệu nào bị mất, nhưng phần lồng nhau vẫn nằm trong một cột thay vì được tách ra. Trước tiên hãy làm phẳng JSON lồng nhau theo cách thủ công nếu mỗi phần cần có cột riêng.
Giá trị null và một khóa mà đối tượng này có nhưng đối tượng khác không có đều tạo ra một ô trống.
Giá trị ô chứa dấu phẩy, dấu ngoặc kép hoặc dấu xuống dòng sẽ được bao quanh bằng dấu ngoặc kép trong đầu ra, và mọi dấu ngoặc kép bên trong nó được nhân đôi, phù hợp với quy tắc thoát CSV nêu trên.
JSON đầu vào phải là một mảng và mọi phần tử trong đó phải là một đối tượng. Số, chuỗi, null hoặc mảng lồng nhau thay cho đối tượng sẽ tạo ra lỗi "JSON phải là một mảng các đối tượng". Một mảng hoàn toàn không có phần tử sẽ tạo ra lỗi "Mảng JSON trống. Hãy thêm ít nhất một đối tượng để chuyển đổi." Tệp đã tải lên không có nội dung sẽ tạo ra lỗi "Tệp đã tải lên trống."
Ví dụ minh họa
Tệp CSV ban đầu:
1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4Chuyển đổi nó sang JSON cho ra:
1[
2 {
3 "Name": "Ann Lee",
4 "Age": 29,
5 "Member": true
6 },
7 {
8 "Name": "Bo, Jr.",
9 "Age": 7,
10 "Member": false
11 }
12]
13Lưu ý rằng "Bo, Jr." vẫn giữ dấu phẩy vì trường này được đặt trong dấu ngoặc kép trong tệp nguồn, còn Age và Member lần lượt trở thành một số và một giá trị Boolean.
Chuyển đổi cùng JSON đó trở lại CSV, với một hàng được thêm vào trong đó Age bị thiếu, cho ra:
1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4Cy Tan,,true
5Giá trị Age bị thiếu trở thành một ô trống, còn dấu phẩy trong "Bo, Jr." khiến trường này lại được đặt trong dấu ngoặc kép khi xuất ra.
Các ứng dụng phổ biến
- Phân tích dữ liệu: chuyển một tệp CSV xuất từ bảng tính hoặc công cụ phân tích thành JSON để có thể xử lý bằng JavaScript, sau đó chuyển kết quả trở lại CSV cho một báo cáo.
- Kiểm thử API: một nhà phát triển xây dựng API tiếp nhận tệp CSV có thể chuyển các tệp mẫu thành JSON để kiểm tra xem trình phân tích cú pháp có tạo ra các đối tượng như mong đợi hay không.
- Di chuyển dữ liệu: chuyển các bản ghi từ một hệ thống xuất CSV sang một hệ thống chỉ chấp nhận JSON, hoặc theo chiều ngược lại.
- Kiểm tra nhanh: chuyển tệp JSON thành CSV dạng bảng để đọc dễ hơn, hoặc theo chiều ngược lại.
Các thư viện lập trình cung cấp cùng chức năng chuyển đổi cho những tác vụ lớn hơn hoặc lặp lại, chẳng hạn như các mô-đun csv và json trong Python, hoặc pandas. Các công cụ dòng lệnh như csvkit và jq xử lý việc chuyển đổi và lọc từ cửa sổ dòng lệnh. Những tùy chọn đó phù hợp với xử lý theo lô; công cụ trên trình duyệt phù hợp với một tệp đơn lẻ mà không cần cài đặt gì.
Các câu hỏi thường gặp
Tệp đã tải lên có được gửi đến máy chủ không? Không. Việc chuyển đổi chạy bằng JavaScript bên trong thẻ trình duyệt. Tệp được đọc từ thiết bị cục bộ và không bao giờ được truyền đi.
Công cụ có hỗ trợ các dấu phân tách khác dấu phẩy, chẳng hạn dấu chấm phẩy hoặc tab, không? Không. Phiên bản hiện tại chỉ đọc các giá trị được phân tách bằng dấu phẩy. Tệp sử dụng dấu phân tách khác trước tiên cần được chuyển sang dạng phân tách bằng dấu phẩy, chẳng hạn bằng cách thay thế dấu phân tách trong trình soạn thảo văn bản.
Tại sao một số như 00512 vẫn là chuỗi văn bản trong đầu ra JSON?
Các số 0 đứng đầu thường có ý nghĩa, như trong mã ZIP, nên công cụ giữ giá trị đó dưới dạng chuỗi thay vì chuyển thành số 512, việc này sẽ làm mất số 0.
Điều gì xảy ra nếu tôi chuyển đổi JSON chứa các đối tượng lồng nhau?
Đối tượng lồng nhau được ghi dưới dạng văn bản JSON trong một ô duy nhất, chẳng hạn {"b":1}. Dữ liệu vẫn được giữ nguyên, nhưng không được tách thành các cột riêng. Trước tiên hãy làm phẳng dữ liệu lồng nhau nếu mỗi trường cần có cột riêng.
Nếu JSON của tôi không phải là một mảng các đối tượng thì sao?
Công cụ hiển thị lỗi và không chuyển đổi gì. Dữ liệu đầu vào phải là một mảng JSON trong đó mọi phần tử đều là đối tượng, chẳng hạn [{"a":1},{"a":2}].
Hàng đầu tiên của tệp CSV có phải luôn là hàng tiêu đề không? Có. Công cụ luôn xem hàng đầu tiên là tên các cột. Tệp không có hàng tiêu đề sẽ khiến hàng dữ liệu đầu tiên bị đọc nhầm thành tiêu đề.
Tài liệu tham khảo
- Shafranovich, Y. "Common Format and MIME Type for Comma-Separated Values (CSV) Files." RFC 4180, IETF, tháng 2005. https://www.rfc-editor.org/rfc/rfc4180
- Bray, T., biên tập. "The JavaScript Object Notation (JSON) Data Interchange Format." RFC 8259, IETF, tháng 2017. https://www.rfc-editor.org/rfc/rfc8259
- "Working with JSON." MDN Web Docs, Mozilla. https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON