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 CSV sang JSON

Chuyển CSV hoặc TSV thành JSON gọn gàng ngay trong trình duyệt của bạn. Hàng đầu tiên trở thành các khóa, dấu phân cách được nhận diện tự động, và bạn có thể giữ mỗi giá trị ở dạng văn bản hoặc cho số và boolean được phân tích theo kiểu — không có gì bị tải lên.

Dấu phân cách

Đầu ra

Giá trị

Hàng đầu tiên trở thành các khóa cho mỗi đối tượng.

CSV
JSON

JSON của bạn sẽ hiển thị ở đây.

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

  1. 1

    Dán CSV của bạn

    Dán các hàng dữ liệu CSV hoặc TSV, mỗi bản ghi trên một dòng. Giữ tên cột ở hàng đầu tiên để chúng có thể trở thành các khóa.

  2. 2

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

    Để ở chế độ Tự động để nhận diện dấu phẩy, dấu chấm phẩy hoặc tab một cách tự động, hoặc chọn dấu phân cách mà dữ liệu của bạn sử dụng.

  3. 3

    Chọn dạng đầu ra

    Dùng Đối tượng để biến mỗi hàng thành một đối tượng có khóa theo tiêu đề, hoặc dùng Hàng để giữ mỗi dòng dưới dạng một mảng đơn giản. Chuyển Giá trị sang Có kiểu để đọc số và boolean thành kiểu JSON thực sự.

  4. 4

    Sao chép JSON

    Sao chép JSON đã định dạng và dán thẳng vào mã nguồn, một yêu cầu API hay một tệp cấu hình của bạn.

Phân tích CSV thành JSON: tiêu đề, kiểu dữ liệu, và những điều bất quy tắc

CSV trông đơn giản nhưng không phải vậy

Một tệp ngăn cách bằng dấu phẩy trông có vẻ tầm thường — các giá trị, dấu phẩy, dấu xuống dòng — nhưng chính sự đơn giản đó là một cái bẫy. CSV không có chuẩn chính thức nào được áp dụng phổ quát; RFC 4180 ghi lại các quy ước phổ biến, song các trình xuất lại bất đồng về việc đặt dấu ngoặc kép, ký tự kết thúc dòng và dấu phân tách. Những trường hợp khó chính là những trường hợp mà một phép tách ngây thơ theo dấu phẩy làm sai: các giá trị mà bản thân chúng chứa dấu phẩy, các giá trị chứa ký tự ngoặc kép, và các giá trị trải dài qua nhiều dòng.

Một bộ phân tích thực thụ xử lý những thứ đó bằng cách đọc các quy tắc đặt dấu ngoặc kép thay vì chỉ tách văn bản. Một trường được bọc trong dấu ngoặc kép có thể hợp lệ chứa dấu phẩy và các dấu ngoặc kép được thoát (viết thành hai dấu ngoặc kép liền nhau), và công cụ này tôn trọng đúng điều đó: một ô chứa "Portland, Oregon" vẫn là một giá trị thay vì biến thành hai cột, và một dấu ngoặc kép nhân đôi bên trong một trường sẽ rút lại thành một dấu ngoặc kép nguyên văn. Trường hợp duy nhất nó không tái dựng được là một giá trị có dấu ngắt dòng bên trong dấu ngoặc kép, vì trước tiên nó tách tệp thành các bản ghi theo từng dòng — nên hãy giữ mỗi bản ghi trên dòng riêng của nó, hoặc loại bỏ các dấu xuống dòng trong ô, trước khi chuyển đổi.

Dạng đầu ra: một mảng đối tượng

Dạng JSON tự nhiên của một bảng là một mảng đối tượng, mỗi đối tượng cho một hàng dữ liệu. Hàng đầu tiên của CSV được coi là tiêu đề, và mỗi ô tiêu đề trở thành một khóa được mọi đối tượng dùng chung. Dán ba cột tên là name, role và city theo sau là hai hàng dữ liệu, bạn sẽ nhận được một mảng gồm hai đối tượng, mỗi đối tượng có ba khóa đó ánh xạ tới các giá trị của hàng. Đây là dạng mà hầu hết các API và script nhập liệu kỳ vọng.

Nếu dữ liệu của bạn không có hàng tiêu đề, phép ánh xạ đó chẳng có gì để rút khóa ra. Hãy chuyển sang chế độ đầu ra hàng và mỗi dòng thay vào đó trở thành một mảng giá trị trần, giữ nguyên lưới thô mà không bịa ra tên. Việc chọn đúng chế độ đầu ra ngay từ đầu sẽ giúp bạn khỏi rơi vào tình cảnh các đối tượng bị đặt khóa theo hàng dữ liệu đầu tiên một cách tình cờ.

Mọi thứ đều là chuỗi cho đến khi bạn nói khác đi

Đây là điều cần lưu ý quan trọng nhất khi đọc CSV. Định dạng này hoàn toàn không mang theo thông tin kiểu nào — mọi ô đều là văn bản. Nếu không can thiệp, số 42 trở thành chuỗi 42, từ true trở thành chuỗi true, và một ô rỗng trở thành một chuỗi rỗng. Mã trông đợi một con số hay boolean thực từ những trường đó sẽ lặng lẽ chạy sai.

Hãy bật giá trị có kiểu và bộ phân tích sẽ nâng văn bản số thuần thành số JSON, các từ true và false thành boolean, và từ null thành một null thực. Suy luận kiểu thì tiện nhưng vốn dĩ mang tính phỏng đoán, nên hãy để mắt tới các trường hợp biên: các định danh có số 0 đứng đầu, số điện thoại, mã ZIP, và các chuỗi giống số phiên bản về kỹ thuật là trông-giống-số nhưng thường nên giữ ở dạng văn bản. Khi sự chính xác là quan trọng với những trường đó, hãy giữ giá trị ở dạng văn bản và chuyển đổi một cách có chủ ý trong mã của riêng bạn.

Phát hiện dấu phân tách và TSV

Không phải tệp giá trị ngăn cách nào cũng dùng dấu phẩy. Bảng tính ở nhiều ngôn ngữ vùng châu Âu xuất ra với dấu chấm phẩy vì dấu phẩy là dấu thập phân, và việc sao chép một vùng thẳng từ một bảng tính thường cho ra các giá trị ngăn cách bằng tab. Chế độ Tự động kiểm tra dòng đầu tiên trong đầu vào của bạn và chọn dấu nào trong số dấu phẩy, dấu chấm phẩy hay tab xuất hiện nhiều nhất ở đó, nên một tệp dấu phẩy, một tệp dấu chấm phẩy và một tệp TSV đều chuyển đổi được mà bạn không phải đổi cài đặt nào.

Tự động phát hiện đáng tin cậy với dữ liệu sạch nhưng có thể bị đánh lừa bởi một tệp mà dòng đầu tiên tình cờ chứa nhiều một loại dấu ngăn cách hơn dấu phân tách thực. Nếu các cột ra sai, hãy ghi đè phỏng đoán và đặt dấu phân tách một cách tường minh — điều đó loại bỏ sự mơ hồ trong một bước.

Mã hóa, BOM, và những con yêu tinh vô hình khác

Các tệp xuất từ phần mềm bảng tính thường bắt đầu bằng một byte-order mark, một ký tự vô hình ở ngay đầu tệp. Để nguyên tại chỗ, nó bị dính vào tên tiêu đề đầu tiên, nên một khóa lẽ ra là id lại lặng lẽ trở thành một chuỗi hơi khác đi và các phép tra cứu theo id của bạn bị trượt. Các ký tự kết thúc dòng không nhất quán giữa các hệ điều hành và các dòng trống thừa ở cuối là những thủ phạm thường thấy còn lại tạo ra các hàng ma hoặc các cột lệch một đơn vị.

Công cụ này cắt bỏ khoảng trắng đầu cuối của mọi tiêu đề và mọi ô, nên những con yêu tinh thường gặp phần lớn tự xử lý lấy: nó dung nạp cả ký tự kết thúc dòng kiểu Unix lẫn Windows, và vì một byte-order mark đứng đầu được tính là khoảng trắng có thể cắt bỏ, nó được tự động loại khỏi tiêu đề đầu tiên thay vì bị dính vào khóa. Đó là lý do dán một bản xuất bảng tính thô vào đây thường cứ thế là chạy được. Nếu một khóa đã chuyển đổi vẫn cứ không chịu khớp trong mã, hãy nghi ngờ một ký tự lạc lõng mà việc cắt bỏ không loại được — chẳng hạn một khoảng trắng độ rộng bằng không — và xuất lại tệp dưới dạng UTF-8 thuần.

Hàng lởm chởm và ô rỗng

Bảng tính thực thì lộn xộn: một số hàng có các ô rỗng ở cuối, một số thiếu hẳn trường, và một dòng trống lạc lõng lẻn vào ở cuối. Khi một hàng có ít giá trị hơn số tiêu đề, các trường thiếu hiện ra dưới dạng các chuỗi rỗng thay vì làm sập phép chuyển đổi, nên mảng đầu ra vẫn giữ dạng chữ nhật và mọi đối tượng đều mang đủ bộ khóa.

Trước khi tin vào kết quả, hãy lướt qua nó để tìm một hàng tố giác nơi các giá trị có vẻ bị xê dịch lệch một cột — đó là dấu hiệu của một dấu phân tách không được thoát bên trong một trường không đặt dấu ngoặc kép ở phía nguồn. Việc sửa tệp nguồn (đặt dấu ngoặc kép cho giá trị gây lỗi) đáng tin cậy hơn nhiều so với cố vá JSON sau đó.

Nơi CSV thành JSON tỏ rõ giá trị

Việc dùng phổ biến nhất là biến một bảng tính mà ai đó đưa cho bạn thành dữ liệu mà chương trình của bạn có thể tiêu thụ: gieo mầm một cơ sở dữ liệu, dựng phần thân của một yêu cầu API, sinh ra một tệp cấu hình, hoặc nạp một fixture kiểm thử. Người không phải lập trình viên thì sống trong bảng tính, lập trình viên thì sống trong JSON, và phép chuyển đổi này là cây cầu giữa hai bên mà không phải viết một bộ phân tích dùng một lần vứt đi mỗi lần.

Vì toàn bộ việc phân tích chạy trong trình duyệt của bạn, bạn có thể chuyển đổi các bản xuất nhạy cảm — danh sách khách hàng, số liệu nội bộ, các hàng tài chính — mà không tải bất cứ thứ gì lên một dịch vụ của bên thứ ba. Hãy ghi nhớ một quy tắc cho sự an toàn ở phía sau: hãy quyết định một cách có ý thức xem mỗi cột nên được gán kiểu hay để nguyên dạng văn bản, bởi việc ép kiểu lặng lẽ là lý do phổ biến nhất khiến dữ liệu đã nhập hành xử khác đi so với những gì bảng tính đã hiển thị.

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

Làm thế nào để chuyển CSV sang JSON?
Dán CSV của bạn với tên cột ở hàng đầu tiên, và JSON đã định dạng sẽ xuất hiện ngay bên dưới. Dùng nút Sao chép để lấy kết quả. Mọi thứ đều chạy trong trình duyệt của bạn.
Hàng đầu tiên có bắt buộc phải là tiêu đề không?
Ở chế độ Đối tượng, hàng đầu tiên được dùng làm các khóa cho mọi đối tượng. Nếu dữ liệu của bạn không có tiêu đề, hãy chuyển sang chế độ Hàng và mỗi dòng sẽ trở thành một mảng giá trị đơn giản thay vào đó.
Công cụ có đọc được tab hay dấu chấm phẩy chứ không chỉ dấu phẩy không?
Có. Chế độ Tự động nhận diện dữ liệu phân tách bằng dấu phẩy, dấu chấm phẩy và tab, nên một bản sao từ bảng tính hay một tệp CSV kiểu châu Âu đều được chuyển đổi mà không cần thay đổi cài đặt nào.
Số và boolean được xử lý như thế nào?
Theo mặc định, mọi giá trị vẫn là một chuỗi. Chuyển Giá trị sang Có kiểu và công cụ sẽ đọc các số thuần thành số JSON, đọc true và false thành boolean, và đọc từ null thành giá trị null thực sự.
Dữ liệu của tôi có được tải lên đâu đó không?
Không. Quá trình chuyển đổi diễn ra hoàn toàn trong trình duyệt của bạn bằng JavaScript, nên CSV của bạn không bao giờ rời khỏi thiết bị và không có gì được lưu trên máy chủ.

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 ↔ CSV

Bộ chuyển đổi Unix Timestamp

Bộ chuyển đổi JSON ↔ YAML

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

Bộ chuyển đổi Văn bản ↔ Hex

Trình dịch mã Morse