Bỏ qua đến nội dung
LeedyBox
Ủng hộ

Chuyển đổi JSON / CSV / YAML / SQL / XML

Chuyển đổi và kiểm tra dữ liệu thường dùng trong phát triển ngay trên trình duyệt.

Chuyển sang:

Đầu vào SQL hỗ trợ câu lệnh INSERT INTO ... VALUES (kiểu MySQL, PostgreSQL, SQL Server và SQLite); hãy dán kết quả SELECT dưới dạng CSV. Giá trị CSV được đọc dưới dạng văn bản. Thuộc tính XML được giữ trong "@attributes", còn văn bản của phần tử đi kèm thuộc tính hoặc phần tử con được giữ trong "#text". Mọi xử lý đều diễn ra trên trình duyệt của bạn.

Hãy kiểm tra kết quả trước khi dùng. Công cụ được cung cấp nguyên trạng, không kèm bảo đảm, và kết quả có thể chưa đầy đủ hoặc không chính xác. Điều khoản dịch vụ

Các định dạng không tương ứng 1:1. Kiểu dữ liệu, giá trị lồng nhau, ký tự đặc biệt và số rất lớn có thể thay đổi khi chuyển đổi. SQL được tạo ra không được kiểm tra trên cơ sở dữ liệu của bạn, vì vậy hãy thử trên bản sao trước khi chạy với dữ liệu thật.

Cách sử dụng

  1. Dán dữ liệu vào ô "Dữ liệu đầu vào". Giữ menu "Đầu vào" ở "Tự nhận diện", hoặc chọn JSON, YAML, CSV, SQL hoặc XML nếu bạn biết định dạng.
  2. Nhấp vào một định dạng bên cạnh "Chuyển sang". Kết quả hiện trong ô "Kết quả", và một thông báo phía trên các ô xác nhận việc chuyển đổi, đồng thời liệt kê những điểm bạn nên kiểm tra, chẳng hạn số lớn có thể đã mất độ chính xác, khóa bị đổi tên hoặc câu lệnh SQL bị bỏ qua. Nếu không đọc được đầu vào, thông báo sẽ hiển thị lỗi và ô "Kết quả" bị xóa trống.
  3. Điều chỉnh các tùy chọn hiện ra cho định dạng đó, chẳng hạn "Dấu phân cách" và "Dữ liệu lồng nhau" cho CSV, "Cơ sở dữ liệu SQL", "Câu lệnh" và "Bảng" cho SQL, hoặc "Gốc" và "Mục" cho XML. Mỗi thay đổi sẽ chuyển đổi lại đầu vào hiện tại, nên bạn không cần nhấp lại nút định dạng.
  4. Để kiểm tra đầu vào mà không chuyển đổi, hãy nhấp "Kiểm tra cú pháp". Công cụ cho biết cú pháp hợp lệ hoặc nêu lỗi gặp phải, kèm dòng và cột khi trình phân tích cung cấp thông tin này.
  5. Xem lại "Kết quả", rồi nhấp "Sao chép kết quả". "Xóa" làm trống cả hai ô.

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

Dữ liệu tôi dán có được gửi đi đâu không?

Không. Dữ liệu được phân tích và chuyển đổi bằng JavaScript trên trình duyệt của bạn, và công cụ không tải dữ liệu lên LeedyBox hay lưu lại. Khi trang mở, nó tải trực tiếp từ leedybox.com hai thư viện mã nguồn mở: js-yaml cho YAML và PapaParse cho CSV; chúng chạy bên trong trang, và dữ liệu của bạn không được gửi đi đâu cả.

"Tự nhận diện" chọn định dạng như thế nào, và khi nào tôi nên tự chọn?

Đầu vào bắt đầu bằng { hoặc [ được đọc là JSON, bắt đầu bằng < được đọc là XML, còn bắt đầu bằng một từ khóa SQL như INSERT, CREATE, SET, START, UPDATE hoặc WITH theo sau là dấu cách, hoặc bằng chú thích -- hay /*, được đọc là SQL. Các trường hợp còn lại được thử đọc là CSV khi dòng đầu tiên chứa dấu phẩy, tab hoặc dấu chấm phẩy, rồi mới đến YAML. Hãy tự chọn định dạng trong menu "Đầu vào" trong các trường hợp sau: khi CSV hoặc YAML bắt đầu bằng một từ cũng là từ khóa SQL, ví dụ hàng tiêu đề CSV bắt đầu bằng Start date hoặc Update time, vì khi đó đầu vào bị đọc là SQL và gặp lỗi; khi mọi dòng của đầu vào YAML có cùng số dấu phẩy, như title: Hello, world rồi đến tags: news, tech, vì khi đó đầu vào có thể bị đọc là CSV; với CSV phân tách bằng dấu gạch đứng hoặc CSV chỉ có một cột, vốn không được tự nhận diện; và khi đầu vào YAML hoặc CSV bị lỗi, vì lúc đó tự nhận diện chỉ báo rằng không nhận ra định dạng, còn khi bạn đã chọn định dạng, công cụ hiển thị lỗi của chính trình phân tích và, trong hầu hết trường hợp, vị trí xảy ra lỗi.

Công cụ có chấp nhận JSON có chú thích, dấu phẩy thừa ở cuối hoặc mỗi dòng một đối tượng không?

Khi menu "Đầu vào" đặt là JSON, chỉ JSON hợp lệ được chấp nhận, nên hãy dùng thiết lập này cùng "Kiểm tra cú pháp" để xem văn bản có phải JSON hợp lệ hay không. Với "Tự nhận diện", đầu vào bắt đầu bằng { hoặc [ nhưng không phải JSON hợp lệ sẽ được đọc theo cú pháp flow của YAML khi có thể, kèm một ghi chú cho biết điều đó: khi ấy dấu phẩy thừa ở cuối, dấu nháy đơn và khóa không có dấu nháy đều dùng được, nhưng khóa không có dấu nháy cần một dấu cách sau dấu hai chấm, vì {a:1} được đọc thành một khóa tên a:1 với giá trị null. Chú thích // và /* */ không phải là chú thích trong YAML; chúng có thể lẫn vào khóa hoặc giá trị, hoặc khiến đầu vào không đọc được, nên hãy xóa chúng trước. JSON Lines (NDJSON) có trong các định dạng đầu ra nhưng không được đọc làm đầu vào khi có nhiều hơn một dòng; hãy đặt các dòng giữa [ và ], với dấu phẩy sau mỗi dòng trừ dòng cuối.

Vì sao 1.10 thành 1.1, hoặc 01234 thành 1234, khi chuyển đổi từ YAML?

Giá trị YAML không có dấu nháy mà trông giống số sẽ được đọc là số, nên một số phiên bản như 1.10 thành 1.1, một mã bưu chính như 01234 thành 1234, và 0x1F thành 31; hãy đặt các giá trị như vậy trong dấu nháy trong YAML để giữ chúng ở dạng văn bản. Công cụ đọc YAML bằng core schema của js-yaml, vốn tuân theo YAML 1.2 đối với giá trị boolean và ngày tháng, nên yes, no, on, off và ngày như 2026-10-02 vẫn là văn bản, và chỉ các dạng viết của true và false, như True hoặc FALSE, mới trở thành giá trị boolean. Khi JSON được chuyển sang YAML, các chuỗi có thể bị đọc nhầm, như "01234", "1.10" hoặc "yes", được ghi trong dấu nháy.

Vì sao một phần tử XML là đối tượng trong tệp này nhưng lại là mảng trong tệp khác?

Các phần tử con lặp lại dưới cùng một phần tử cha trở thành mảng, nhưng một phần tử con duy nhất trở thành giá trị hoặc đối tượng thông thường, nên <items> có một <item> cho cấu trúc khác với <items> có hai <item>. Mọi giá trị XML được đọc là văn bản, nên <id>1</id> thành "1" và 007 giữ nguyên các số 0, còn chú thích và chỉ thị xử lý (processing instruction) bị bỏ đi. Với đầu ra CSV và SQL, các hàng được lấy từ một mảng nằm trong các lớp bao chỉ có một khóa như <items>, nên khi chỉ có một <item>, toàn bộ phần tử sẽ thành văn bản JSON trong một cột duy nhất; với CSV, "Làm phẳng (cột a.b.c)" tách nó thành các cột.

Tôi có thể dán bản dump MySQL hoặc PostgreSQL làm đầu vào SQL không?

Được, miễn là các hàng nằm trong câu lệnh INSERT INTO ... VALUES. CREATE TABLE, SET, LOCK và các câu lệnh thiết lập tương tự được bỏ qua, các câu lệnh khác như DROP TABLE bị bỏ qua kèm một ghi chú, và các hàng từ nhiều bảng được gộp vào một danh sách, nên hãy dán từng bảng một nếu các bảng có cột khác nhau. Theo mặc định, mysqldump không ghi tên cột, nên các cột được đặt tên column1, column2, v.v., trừ khi bạn dump với --complete-insert. Theo mặc định, pg_dump ghi các hàng thành khối COPY mà công cụ không đọc được, vì vậy hãy dump với --column-inserts. Nếu bản dump còn chứa hàm hoặc thủ tục lưu trữ (stored procedure), hãy chỉ dán các câu lệnh INSERT: công cụ tách đầu vào tại các dấu chấm phẩy, nên một câu lệnh INSERT bên trong thân hàm có thể bị đọc thành dữ liệu hoặc làm dừng việc chuyển đổi.

Vì sao số từ tệp CSV lại nằm trong dấu nháy, và "CREATE TABLE + INSERT" dùng kiểu cột nào?

Mọi giá trị CSV được coi là văn bản; cách này giữ lại các số 0 ở đầu như 01234 nhưng biến 42 thành "42" trong JSON và '42' trong SQL, và ô trống trở thành chuỗi rỗng chứ không phải null hay NULL. Kiểu của mỗi cột được chọn dựa trên các giá trị trong cột đó, nên bảng tạo từ CSV có các cột văn bản: VARCHAR(255), hoặc TEXT khi có giá trị dài hơn 255 ký tự (NVARCHAR(255) hoặc NVARCHAR(MAX) với SQL Server, TEXT với SQLite). Khi đầu vào là JSON hoặc YAML và mọi giá trị trong một cột đều là số không nằm trong dấu nháy, hoặc mọi giá trị đều là true hay false, cột đó sẽ có kiểu số hoặc boolean: một kiểu số nguyên (INT, INTEGER hoặc BIGINT, tùy cơ sở dữ liệu và độ lớn của các số), một kiểu số thực dấu phẩy động cho số thập phân, hoặc BOOLEAN (BIT với SQL Server, INTEGER với SQLite). Câu lệnh không có khóa chính, chỉ mục hay ràng buộc NOT NULL, nên hãy thêm chúng trước khi chạy nếu bảng của bạn cần.