Trình định dạng JSONL

Dán JSONL hoặc NDJSON vào đây. Các dòng trống sẽ tự động bị bỏ qua, và mỗi dòng dữ liệu phải là một đối tượng JSON hoàn chỉnh.

Kết quả định dạng sẽ hiển thị tại đây.

Mỗi dòng không trống phải là một đối tượng JSON hoàn chỉnh.

Tổng số dòng: 1Dòng không trống: 0Dòng hợp lệ: 0Dòng không hợp lệ: 0
Dán JSONL để bắt đầu định dạng ngay lập tức.

Một trang định dạng JSONL nhẹ nhàng dành cho log, kho lưu trữ phiên làm việc và xuất dữ liệu dạng luồng. Dán các đối tượng JSON phân tách bằng xuống dòng vào ô bên trái, bên phải sẽ hiện ngay kết quả định dạng của từng bản ghi và cho bạn thấy chính xác dòng nào bị lỗi.

Đề xuất Liên quan

Định dạng JSONL là gì?

JSONL (JSON Lines) là định dạng văn bản tổ chức các bản ghi JSON theo dòng. Đặc điểm cốt lõi không phải «trông giống JSON», mà là «mỗi bản ghi chiếm riêng một dòng». Trong kỹ thuật thực tế, điều này gần như luôn thể hiện thành «mỗi dòng không trống là một đối tượng JSON hoàn chỉnh», các đối tượng phân tách bằng xuống dòng thay vì bị bọc thêm trong một mảng lớn `[{...},{...}]`.

Cách tổ chức này đặc biệt hợp với log, luồng sự kiện, kho phiên, xuất hàng loạt và xử lý luồng: chương trình không cần đọc cả tệp vào bộ nhớ, chỉ cần đọc theo dòng là tiêu thụ được từng bản ghi. Một dòng hỏng cũng xác định được ngay số dòng, thay vì đếm ngoặc và tìm dấu phẩy một cách mò mẫm trong một mảng JSON siêu dài.

Định dạng JSONL không giống định dạng JSON thông thường. Trình định dạng thường giả định đầu vào là cả một tài liệu JSON hoàn chỉnh; còn trình định dạng JSONL phải phân tích, kiểm tra và báo lỗi theo từng dòng, đồng thời giữ ngữ nghĩa bản ghi phân tách bằng xuống dòng. Với log và tệp xuất, khác biệt này rất then chốt.

Trang này được thiết kế xoay quanh đúng ngữ nghĩa thực tế đó: bên trái nhập các bản ghi đối tượng phân tách theo dòng, bên phải hiển thị kết quả định dạng theo từng bản ghi, đồng thời chỉ thẳng ra dòng hỏng, dòng bị cắt và dòng không phải đối tượng. Nhờ vậy khi rà một tệp `.jsonl`, bạn thấy được «bản ghi nào có vấn đề» thay vì chỉ nhận một `SyntaxError` chung chung.

Trường hợp sử dụng

  • Làm đẹp từng bản ghi JSONL xuất từ log ứng dụng trước khi lần lượt kiểm tra từng trường, thay vì nhìn chằm chằm vào một chuỗi đối tượng dài bị nén thành một dòng
  • Kiểm tra các tệp kho phiên làm việc mà mỗi dòng là một đối tượng sự kiện, xác nhận mọi bản ghi đều đầy đủ và đọc được
  • Khi xuất hàng loạt từ đường ống dữ liệu, nền tảng tracking hay Elasticsearch bị lỗi, nhanh chóng xác định dòng đối tượng JSON nào bị viết sai
  • Khi gỡ lỗi giao diện xuất luồng, kiểm tra xem máy chủ có thực sự liên tục xuất «mỗi dòng một đối tượng» thay vì đẩy sớm một đối tượng dở dang
  • Dán NDJSON sao chép từ terminal, bảng điều khiển giám sát hay nền tảng log đám mây vào, sắp xếp lại cấu trúc trước rồi mới tiếp tục điều tra
  • Kiểm tra xem trong kết quả đối tượng từng dòng do AI tạo ra có dòng nào lẫn nhầm một mảng, chuỗi hay JSON chưa hoàn chỉnh không
  • Trước khi nhập vào các quy trình phụ thuộc bản ghi theo dòng như ClickHouse, BigQuery, Kafka Connect, hãy tự rà lại nội dung JSONL trước
  • Khi rà soát log kiểm toán, sự kiện kiểm soát rủi ro hay luồng sự kiện tracking, xem từng bản ghi xem cấu trúc đối tượng có ổn định và nhất quán không
  • Khi tệp JSONL bị cắt cụt hoặc tải về chưa đầy đủ, nhanh chóng nhìn thấy đối tượng cuối cùng nào chưa được đóng
  • Định dạng trước JSON phân tách theo dòng do công cụ nội bộ xuất ra, rồi gửi cho đồng nghiệp để review mã hoặc đối chiếu dữ liệu
  • Trước khi viết tập lệnh phân tích JSONL, tự xác nhận trước các cấp trường, đối tượng lồng nhau và vị trí mảng để giảm thời gian gỡ lỗi tập lệnh
  • Khi xử lý tệp xuất cũ trộn lẫn dòng trống và dòng hỏng, hãy lọc bỏ vấn đề cấu trúc trước rồi mới quyết định có chuyển sang CSV hay nhập cơ sở dữ liệu hay không

Cách Sử dụng

  1. Dán nội dung JSONL hoặc NDJSON vào ô nhập, đảm bảo mỗi dòng không trống là một đối tượng JSON độc lập
  2. Bên phải sẽ định dạng ngay theo từng dòng và ở dòng hỏng sẽ ghi rõ số dòng, thông báo lỗi và bản ghi gốc
  3. Sửa các dòng tương ứng theo gợi ý cho đến khi số dòng không hợp lệ về bằng không
  4. Sau khi xác nhận tất cả đều hợp lệ, hãy sao chép toàn bộ kết quả định dạng hoặc chuyển dữ liệu sang tập lệnh, trình nhập và quy trình phân tích phía sau

Tính năng

  • Phân tích JSONL / NDJSON theo từng dòng, không cần tự gói dữ liệu thành một mảng JSON hoàn chỉnh kiểu `[{...},{...}]` trước
  • Kiểm tra theo đúng ngữ nghĩa tệp thực tế «mỗi dòng không trống là một đối tượng JSON», bám sát các dạng dữ liệu phổ biến như log, luồng sự kiện và kho phiên làm việc
  • Bố cục hai cột: ô nhập `textarea` bên trái, kết quả định dạng hiện ngay bên phải, rất tiện vừa sửa vừa xem
  • Dòng hỏng được đánh dấu kèm số dòng cụ thể, lỗi phân tích và nội dung gốc, giúp sửa nhanh bản ghi bị cắt, thiếu ngoặc và lỗi nối ghép
  • Chỉ cho sao chép khi mọi dòng không trống đều hợp lệ, tránh đưa dữ liệu một phần đúng một phần hỏng sang quy trình phía sau
  • Tích hợp thống kê tổng số dòng, dòng không trống, dòng hợp lệ và dòng không hợp lệ, giúp nhanh chóng đánh giá một tệp lớn có bao nhiêu bản ghi hỏng
  • Có sẵn dữ liệu mẫu để dùng thử hiệu quả định dạng JSONL ngay khi mở lần đầu
  • Mọi xử lý đều hoàn tất cục bộ trong trình duyệt; log, sự kiện phiên và nội dung xuất từ API đều không bị tải lên

Trình định dạng JSONL vs trình định dạng JSON vs sửa JSON

Các công cụ này thường dùng nối tiếp nhau, nhưng giải quyết vấn đề khác nhau. Chọn đúng cửa vào sẽ nhanh hơn nhiều.

Công cụĐầu vào hợp nhấtNăng lực cốt lõiTình huống dùng
Trình định dạng JSONLMỗi dòng một đối tượng JSONKiểm tra và làm đẹp theo từng bản ghiLog, NDJSON, kho phiên, xuất luồng
Trình định dạng JSONMột đối tượng hoặc mảng JSON hoàn chỉnhLàm đẹp cả tài liệu JSONPhản hồi API, tệp cấu hình, payload một lần
Sửa JSONVăn bản JSON có lỗi cú pháp hoặc không chuẩnSửa cú pháp trước rồi giao công cụ sauDấu phẩy đuôi, chú thích, lỗi ngoặc kép, JSON bị cắt

Best Practices

Khi gỡ lỗi hãy giữ nguyên dạng JSONL gốc, đừng tự gói thành mảng chỉ để cho dễ hiểu

Nếu hệ thống phía sau nhận JSONL, hãy rà soát ở đúng dạng gốc «mỗi bản ghi một dòng». Gói thành mảng dù đưa được vào trình định dạng thường nhưng sẽ mất ngữ nghĩa số dòng gốc và khó ánh xạ về vị trí dòng hỏng thật.

Tệp lớn thì ưu tiên xem vài dòng cuối trước

Nhiều tệp JSONL không sai cấu trúc ở giữa, mà vài dòng cuối bị cắt do luồng ngắt, tải lỗi hoặc ghi chưa xong. Xem trước vài bản ghi cuối thường nhanh hơn lượt cả tệp từ đầu.

Nếu đầu vào có ngoặc đơn, chú thích hoặc phong cách JSON5, đi qua Sửa JSON trước sẽ tiết kiệm thời gian

Trang JSONL nhấn vào kiểm tra đối tượng theo dòng; nếu dữ liệu gốc vốn không phải JSON chuẩn, sửa trước rồi định dạng thường hiệu quả hơn việc tự sửa từng dòng trong tệp dài.

Khi chuẩn bị nhập lại, nhất thiết giữ ngữ nghĩa truyền «mỗi dòng một đối tượng»

Khối làm đẹp nhiều dòng bên phải hợp cho người đọc, nhưng nếu bạn định ghi dữ liệu trở lại hệ thống log, hàng đợi thông điệp hay trình nhập, hãy giữ cấu trúc gốc một đối tượng một dòng thay vì lấy dạng xem trước làm định dạng truyền cuối cùng.

Lấy số dòng làm đầu mối chính, thay vì đọc mắt cả tệp

Khi rà soát thật, cách nhanh nhất thường là chốt số dòng hỏng trước rồi so bản ghi đó với các bản ghi hợp lệ lân cận. Nhờ vậy thấy nhanh hơn là thiếu ngoặc, thiếu dấu nháy, trường bị cắt hay một đối tượng lẫn nhầm kiểu dữ liệu.

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

JSON và JSONL khác nhau thế nào?

JSON thông thường thường là cả một đối tượng hoặc mảng, phải được phân tích trọn vẹn như một tài liệu hoàn chỉnh; còn JSONL (JSON Lines, còn gọi là NDJSON) lại đặt một bản ghi độc lập trên mỗi dòng, và trong thực tế kỹ thuật phổ biến nhất là «mỗi dòng một đối tượng JSON». Nó hợp hơn với log, luồng sự kiện, xử lý luồng và nhập hàng loạt vì có thể đọc, ghi và xác định lỗi theo từng dòng.

Vì sao trang này nhấn mạnh «mỗi dòng một đối tượng JSON»?

Vì phần lớn tệp JSONL trong thế giới thực được tổ chức như vậy, đặc biệt là log, kho phiên, luồng sự kiện và tệp xuất. Mẫu kho của bạn cũng là dạng điển hình: mỗi dòng là một đối tượng phân tách bằng xuống dòng. Trang kiểm tra theo ngữ nghĩa này, sát với tình huống gỡ lỗi thực tế hơn là chấp nhận rộng rãi mọi giá trị JSON.

JSONL khác mảng JSON kiểu `[{...},{...}]` ở đâu?

Mảng JSON là một tài liệu JSON hoàn chỉnh, phải đọc hết rồi mới phân tích; còn JSONL tách mỗi đối tượng thành bản ghi dòng độc lập, đọc được theo luồng và dễ xác định đúng dòng khi một bản ghi lỗi. Với tệp log lớn và luồng sự kiện, JSONL phù hợp hơn một mảng gói trọn.

Vì sao dòng trống bị bỏ qua?

Dòng trống thường đến từ thao tác sao chép dán, xoay vòng log hoặc chỉnh sửa thủ công và không đại diện cho bản ghi dữ liệu thật. Bỏ qua dòng trống giúp giảm nhiễu mà vẫn kiểm tra nghiêm ngặt mọi dòng có nội dung.

Nếu một dòng là mảng, chuỗi hoặc `null` thì sao?

Trang sẽ coi đó là dòng không hợp lệ, vì định dạng mục tiêu là «mỗi dòng không trống là một đối tượng JSON». Nếu dữ liệu của bạn thực sự cần lưu mảng hoặc giá trị thô theo từng dòng, thì đó không phải tình huống log JSONL điển hình mà trang này đang tối ưu.

Vì sao có một dòng hỏng thì không thể sao chép ngay toàn bộ kết quả?

Đây là tương tác cố tình giữ mức thận trọng. Chỉ cho sao chép khi mọi dòng không trống đều hợp lệ, tránh đưa kết quả một phần đúng một phần hỏng cho trình nhập, tập lệnh hoặc đồng nghiệp phía sau, đỡ mất công điều tra lần hai.

Nó có giúp tôi phát hiện tệp log bị cắt cụt không?

Có. Nhiều vấn đề JSONL nằm ở vài dòng cuối, ví dụ đối tượng thiếu `}`, chuỗi thiếu dấu ngoặc kép đóng hoặc luồng mạng bị ngắt giữa chừng. Trang sẽ phơi bày ngay dòng hỏng tương ứng, đặc biệt hữu ích cho tải về chưa đầy đủ và luồng xuất bị gián đoạn.

JSONL và NDJSON có phải một không?

Trong đại đa số ngữ cảnh kỹ thuật có thể coi là từ đồng nghĩa. Cả hai đều chỉ các bản ghi JSON phân tách bằng xuống dòng, chỉ khác thói quen đặt tên.

Khi định dạng JSONL, dữ liệu của tôi có bị tải lên không?

Không. Mọi phân tích, kiểm tra và định dạng đều chỉ chạy cục bộ trong trình duyệt; log, phản hồi API, kho phiên và nội dung xuất dữ liệu đều không được gửi lên máy chủ.

Khi nào nên dùng trình định dạng JSON thông thường thay vì trình định dạng JSONL?

Nếu đầu vào bản thân nó là một đối tượng JSON hoàn chỉnh hoặc một mảng, như phần thân phản hồi API, tệp cấu hình, gói dữ liệu kiểu `[{...},{...}]`, thì nên dùng trang định dạng JSON thông thường; chỉ khi đầu vào là các bản ghi đối tượng tách bằng xuống dòng thì trang JSONL này mới hợp hơn.

Thuật ngữ

JSONL
Định dạng văn bản với các bản ghi JSON phân tách theo dòng. Cách viết kỹ thuật phổ biến nhất: mỗi dòng không trống là một đối tượng JSON hoàn chỉnh.
JSON Lines
Tên đầy đủ và một cách gọi phổ biến khác của JSONL, thường được coi là đồng nghĩa.
NDJSON
Newline Delimited JSON, dịch sát là «JSON phân tách bằng xuống dòng». Trong phần lớn tình huống log và đường ống dữ liệu thì gần như tương đương JSONL.
Bản ghi theo dòng
Bố cục dữ liệu mà mỗi dòng đại diện cho một bản ghi hoàn chỉnh, hợp với ghi/đọc luồng và xác định lỗi theo dòng.
Pretty Print / định dạng làm đẹp
Sắp xếp lại JSON nén một dòng thành cấu trúc dễ đọc có thụt lề và xuống dòng, tiện xem cấp trường bằng mắt.
Dòng hỏng
Một dòng không phải JSON hợp lệ, hoặc phân tích được nhưng không đúng cấu trúc mong đợi (ví dụ không phải đối tượng), nên không thể là bản ghi JSONL hợp lệ.
Luồng bị cắt cụt
Log hoặc bản xuất bị ngắt giữa chừng trong quá trình truyền, đẩy bộ đệm hoặc lưu, khiến bản ghi cuối không được đóng trọn vẹn.
Mảng JSON
Trong JSON chuẩn, cả một tập hợp được bọc bởi `[` và `]`, ví dụ `[{...},{...}]`. Khác với JSONL, nó phải được phân tích như một tài liệu duy nhất.

Authoritative References