T

Text Machine

Công cụ văn bản mạnh mẽ, ngay trong trình duyệt của bạn

Bộ chuyển đổi JSON ↔ CSV

Chuyển đổi JSON sang CSV và CSV trở lại thành JSON ngay trong trình duyệt. Dán một mảng các đối tượng để có bảng dữ liệu sẵn sàng cho bảng tính, hoặc dán CSV để nhận JSON có cấu trúc — với toàn quyền kiểm soát dấu phân cách và hàng tiêu đề.

Dấu phân cách

Đầu vào JSON
Đầu ra CSV

Nhập dữ liệu ở trên để xem kết quả chuyển đổi tại đây.

Cách sử dụng Bộ chuyển đổi JSON ↔ CSV

  1. 1

    Chọn chiều chuyển đổi

    Dùng nút gạt để chọn JSON sang CSV hoặc CSV sang JSON. Nút đổi chiều sẽ đưa kết quả của bạn vào ô đầu vào để bạn có thể chuyển đổi ngược lại theo chiều kia.

  2. 2

    Dán dữ liệu của bạn

    Dán một mảng JSON gồm các đối tượng, hoặc văn bản CSV, vào ô đầu vào. Quá trình chuyển đổi tự động chạy ngay khi bạn gõ.

  3. 3

    Thiết lập tùy chọn

    Chọn dấu phân cách phù hợp với dữ liệu của bạn, và khi đọc CSV, hãy quyết định xem hàng đầu tiên có phải là tiêu đề hay không và có phân tích số cùng boolean hay không.

  4. 4

    Sao chép kết quả

    Xem lại kết quả đã chuyển đổi và sao chép vào khay nhớ tạm, sẵn sàng để đưa vào một bảng tính, một cơ sở dữ liệu hay mã nguồn của bạn.

Biến mảng JSON thành CSV sẵn sàng cho bảng tính

Ánh xạ cốt lõi: đối tượng thành hàng, khóa thành cột

CSV là một lưới phẳng hai chiều — hàng và cột — trong khi JSON là một cây. Vì vậy phép chuyển đổi hợp lý là một phép cụ thể: một mảng đối tượng ở cấp cao nhất, trong đó mỗi đối tượng là một bản ghi. Mỗi đối tượng trở thành một hàng dữ liệu duy nhất, và hợp của tất cả các khóa trên mọi đối tượng trở thành hàng tiêu đề. Dán một mảng gồm ba bản ghi người với các trường name và role, bạn sẽ nhận được một dòng tiêu đề name và role theo sau là ba hàng.

Việc thu thập khóa trên tất cả các đối tượng, chứ không chỉ đối tượng đầu tiên, là điều giữ cho dữ liệu lởm chởm được căn thẳng hàng. Nếu bản ghi đầu tiên của bạn có name và email nhưng bản ghi thứ hai thêm một trường phone, bộ chuyển đổi vẫn xuất ra một cột phone và đơn giản để trống ô phone của hàng đầu tiên. Thứ tự được lấy theo lần xuất hiện đầu tiên, nên các cột đọc theo một trình tự ổn định, có thể đoán trước.

Vì sao mảng đối tượng là dạng đầu vào đúng

Một con số đơn lẻ hay một mảng các chuỗi trần không có dạng bảng tự nhiên, nên quy ước mảng đối tượng tồn tại để loại bỏ sự mơ hồ đó. Mỗi phần tử trở thành một hàng; mỗi tên trường trở thành một cột. Một đối tượng đơn lẻ chỉ đơn giản là trường hợp một hàng — công cụ này bọc một đối tượng đơn lẻ thành một bảng một hàng mà tiêu đề là các khóa của nó — nhưng quy ước này thực sự tỏa sáng với các danh sách, vốn chính xác là dạng mà hầu hết các REST endpoint trả về cho tài nguyên dạng danh sách: một endpoint users, một endpoint orders, một endpoint kết quả tìm kiếm. Đó là lý do xuất một phản hồi API ra bảng tính là lý do phổ biến nhất khiến người ta tìm đến phép chuyển đổi này.

Nếu dữ liệu thực của bạn được bọc sâu thêm một cấp, ví dụ một đối tượng có trường results chứa mảng mà bạn quan tâm, hãy nhấc mảng bên trong đó ra trước và dán riêng nó. Cho bộ chuyển đổi trực tiếp cái mảng là điều tạo ra một bảng sạch sẽ thay vì một hàng đơn lẻ khó hiểu.

Cách xử lý đối tượng và mảng lồng nhau

CSV không có khái niệm về chiều sâu, nên một giá trị mà bản thân nó là một đối tượng hay một mảng thì không thể nở ra thành nhiều cột hơn nếu không bịa ra một sơ đồ làm phẳng. Công cụ này chọn con đường có thể đoán trước và đảo ngược được: một giá trị lồng nhau được tuần tự hóa thành văn bản JSON gọn bên trong một ô duy nhất. Một trường address chứa một street và một city trở thành một ô duy nhất chứa đối tượng nhỏ đó dưới dạng một chuỗi JSON, được đặt trong dấu ngoặc kép để các dấu phẩy bên trong nó không làm hỏng hàng.

Cách đó giữ cho dữ liệu nguyên vẹn và đi-về được, nhưng nó không dễ chịu khi đọc trong một bảng tính. Khi các bản ghi của bạn thực sự phân cấp — cấu hình lồng nhau sâu, các cấu trúc cây, bất cứ thứ gì có mảng của mảng — thì CSV là đích sai và một biểu diễn JSON hay YAML sẽ phục vụ bạn tốt hơn nhiều. CSV tỏa sáng với dữ liệu phẳng, dạng bản ghi.

Đặt dấu ngoặc kép và thoát ký tự, phần lặng lẽ làm hỏng tệp

Lý do việc nối chuỗi một cách ngây thơ tạo ra CSV bị hỏng là vì dấu phân tách có thể xuất hiện bên trong dữ liệu. Một giá trị city là "Portland, Oregon" chứa một dấu phẩy; viết thô ra, nó sẽ tách thành hai ô và làm xê dịch mọi cột phía sau nó. Bộ chuyển đổi tuân theo quy ước phổ biến RFC 4180: bất kỳ trường nào chứa dấu phân tách, một dấu ngoặc kép, hay một dấu ngắt dòng đều được bọc trong dấu ngoặc kép, và bất kỳ dấu ngoặc kép nào vốn đã có bên trong giá trị đều được nhân đôi.

Vì vậy một giá trị chứa cụm she said "hi" được xuất ra với dấu ngoặc kép bao quanh và các dấu ngoặc kép bên trong được nhân đôi, còn một giá trị có dấu xuống dòng nhúng bên trong thì được bọc lại để dấu ngắt dòng nằm yên trong một ô thay vì bắt đầu một hàng mới. Đây chính xác là cách mã hóa mà các bảng tính kỳ vọng khi nhập vào, đó là lý do một tệp được đặt dấu ngoặc kép đúng sẽ mở ra gọn gàng trong khi một tệp tự làm thủ công lại rải dữ liệu khắp lưới.

Chọn dấu phân tách

Dấu phẩy là mặc định và chính là chữ C trong CSV, nhưng nó là lựa chọn tệ khi dữ liệu của bạn đầy dấu phẩy hoặc khi ngôn ngữ vùng của bảng tính của bạn dùng dấu phẩy làm dấu thập phân. Vì lý do đó phần lớn châu Âu mặc định dùng dấu chấm phẩy, và các nhà phân tích thường ưa ký tự tab vì tab hầu như không bao giờ xuất hiện bên trong các giá trị trường thực, qua đó né được gần như toàn bộ việc đặt dấu ngoặc kép.

Hãy khớp dấu phân tách với nơi tệp sẽ đến. Nếu bảng tính của một đồng nghiệp cứ nhồi mọi hàng vào cột A, nguyên nhân thường gặp là sự không khớp dấu phân tách — hãy chuyển đổi giữa dấu phẩy, dấu chấm phẩy và tab cho đến khi các cột tách ra đúng trên máy của họ.

Đi và về lại JSON

Phép chuyển đổi chạy theo cả hai chiều. Đổi sang CSV thành JSON và hàng tiêu đề sẽ đặt tên cho các khóa trong khi mỗi hàng tiếp theo trở thành một đối tượng, điều này tiện lợi khi một người không phải lập trình viên đưa cho bạn một bảng tính và bạn cần dữ liệu có cấu trúc cho một API hay một script nhập liệu. Có một điều cần lưu ý xác định cả vòng đi-về: các ô CSV là văn bản không kiểu, nên một số 42 đọc ngược về từ CSV là chuỗi 42, không phải con số, trừ khi bạn bật phân tích có kiểu.

Hãy bật tùy chọn phân tích số và boolean để chuyển văn bản số thuần và văn bản true/false thành các giá trị JSON thực trên đường về. Ngay cả khi đó, hãy coi vòng đi-về là mất mát về bản chất — việc đặt dấu ngoặc kép sẽ chuẩn hóa, thông tin kiểu được dựng lại bằng phương pháp suy đoán, và bất kỳ JSON-lồng-trong-một-ô nào cũng phải được phân tích lại bằng tay. Để có một bản sao trung thực của dữ liệu có cấu trúc, hãy giữ nó ở dạng JSON suốt cả chặng đường.

Nơi phép này phù hợp trong một quy trình làm việc thực tế

Việc dùng thường ngày là bắc cầu giữa bộ phận kỹ thuật và phần còn lại của doanh nghiệp: xuất một danh sách API ra CSV để nó mở được trong một bảng tính, đưa vào một bảng điều khiển BI, hoặc nạp vào một mẫu nhập liệu hàng loạt. Các nhà phân tích có được một lưới mà họ có thể xoay bảng và vẽ biểu đồ; còn bạn thì khỏi phải viết một script xuất dữ liệu dùng một lần. Vì toàn bộ phép chuyển đổi diễn ra trong trình duyệt của bạn, bạn có thể làm điều này với dữ liệu sản xuất — lịch sử đơn hàng, danh sách người dùng, số liệu nội bộ — mà không gửi bất cứ thứ gì trong đó đến một máy chủ của bên thứ ba.

Một mẹo thực tế cho các bản xuất sạch sẽ: hãy chuẩn hóa các bản ghi của bạn trước khi chuyển đổi. Hãy bảo đảm mọi đối tượng dùng cùng tên trường, nhấc mảng ra khỏi bất kỳ đối tượng bọc nào, và quyết định ngay từ đầu xem các trường lồng nhau nên được làm phẳng trong mã của bạn hay để nguyên dưới dạng JSON-trong-một-ô. Vài phút định hình JSON sẽ cho ra một CSV không cần dọn dẹp gì sau khi nhập.

Câu hỏi thường gặp

Làm thế nào để chuyển JSON sang CSV?
Dán một mảng JSON gồm các đối tượng vào ô đầu vào. Mỗi đối tượng sẽ thành một hàng, và công cụ tự động thu thập mọi khóa trên tất cả các đối tượng để dựng nên hàng tiêu đề cột, nhờ vậy ngay cả những bản ghi có trường khác nhau cũng được sắp đúng cột.
Công cụ sử dụng định dạng CSV nào?
Công cụ tuân theo quy ước RFC 4180 phổ biến: bất kỳ trường nào chứa dấu phân cách, dấu ngoặc kép hoặc dấu xuống dòng đều được bao trong dấu ngoặc kép, và các dấu ngoặc kép bên trong được nhân đôi. Bạn có thể đổi dấu phân cách giữa dấu phẩy, dấu chấm phẩy và tab cho khớp với bảng tính của mình.
Công cụ có chuyển CSV ngược lại thành JSON được không?
Có. Hãy chuyển chiều sang CSV sang JSON. Theo mặc định, hàng đầu tiên được xem là tiêu đề đặt tên cho từng cột, và mỗi hàng tiếp theo trở thành một đối tượng JSON. Bật “Phân tích số & boolean” để biến văn bản dạng số và dạng true hoặc false thành các giá trị JSON thực sự.
Các đối tượng lồng nhau được xử lý thế nào?
Vì CSV là một định dạng phẳng, dựa trên bảng, nên khi bạn chuyển từ JSON sang CSV, các đối tượng và mảng lồng nhau được tuần tự hóa thành văn bản JSON gọn trong một ô duy nhất. Với dữ liệu lồng sâu, định dạng JSON hoặc YAML thường phù hợp hơn.
Dữ liệu của tôi có được tải lên máy chủ không?
Không. Toàn bộ quá trình chuyển đổi chạy cục bộ ngay trong trình duyệt của bạn. Dữ liệu của bạn không bao giờ bị tải lên, ghi lại hay lưu trữ, nên nó hoàn toàn riêng tư và công cụ vẫn hoạt động ngay cả khi bạn ngoại tuyến.

Công cụ liên quan

Tiếp tục với những công cụ hữu ích này

Bộ chuyển đổi JSON ↔ YAML

Bộ chuyển đổi Unix Timestamp

Bộ chuyển đổi CSV sang JSON

Bộ chuyển đổi Nhị phân ↔ Thập phân

Bộ Chuyển Đổi Thập Phân ↔ Nhị Phân

Bộ chuyển đổi Văn bản ↔ Nhị phân