UTILS.
100% trong trình duyệt
{ }

Đối tượng JS sang JSON nghiêm ngặt

Sửa một object literal JavaScript lỏng lẻo — khóa không dấu ngoặc, dấu nháy đơn, dấu phẩy thừa, chú thích — thành JSON hợp lệ nghiêm ngặt, không dùng eval.

— kết quả hiển thị ở đây —

Về công cụ này

Công cụ Đối tượng JS sang JSON nghiêm ngặt sửa một object literal JavaScript hoặc kiểu JSON5 lỏng lẻo thành JSON hợp lệ, nghiêm ngặt. Nó được xây dựng trên một tokenizer viết tay — nó không bao giờ dùng eval hoặc new Function — nên nó an toàn dưới một Content Security Policy nghiêm ngặt và an toàn để dán văn bản không đáng tin vào. Mọi thứ chạy trong trình duyệt của bạn.

Nó chấp nhận những thứ mà JSON thực sự từ chối: khóa định danh không dấu ngoặc, chuỗi đặt trong nháy đơn, dấu phẩy thừa trước ] hoặc }, chú thích // dòng và /* khối */, thập lục phân (0xFF), các literal bát phân và nhị phân, các số dẫn-dấu-cộng và dẫn-dấu-chấm (+1, .5), và các giá trị undefined, NaN, và Infinity. Các khóa được đặt lại trong dấu ngoặc kép đôi, các chuỗi được escape lại đúng, các chú thích và dấu phẩy thừa được loại bỏ, và các số được chuẩn hóa thành số JSON thuần. Bạn chọn cách xử lý undefined (chuyển sang null hoặc bỏ khóa) và các số không hữu hạn (chuyển sang null hoặc phát ra một lỗi), rồi giá trị được tuần tự hóa lại với JSON.stringify ở thụt lề bạn chọn — 2 khoảng trắng, 4 khoảng trắng, tab, hoặc rút gọn.

Khi đầu vào không thể phân tích được, công cụ báo lỗi cú pháp đầu tiên cùng dòng và cột của nó để bạn tìm vấn đề nhanh. Điều này bổ sung cho một bộ định dạng JSON nghiêm ngặt, vốn đơn giản từ chối đầu vào lỏng lẻo — ở đây mục tiêu là cứu vãn output console đã sao chép, các đoạn config, và các đối tượng chỉnh tay thành JSON mà bất kỳ parser nào cũng chấp nhận.

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

Nó chấp nhận cú pháp lỏng lẻo nào?
Khóa không dấu ngoặc, chuỗi nháy đơn, dấu phẩy thừa, chú thích // và /* */, số hex/bát phân/nhị phân, các số dẫn-dấu-cộng và dẫn-dấu-chấm, và các literal undefined, NaN, và Infinity — những thứ phổ biến khiến các đối tượng JS đã sao chép không hợp lệ dưới dạng JSON.
Nó có dùng eval để phân tích không?
Không. Nó dùng một tokenizer viết tay và parser đệ quy-giảm dần, không bao giờ eval hoặc new Function, nên nó hoạt động dưới một Content Security Policy nghiêm ngặt và an toàn cho đầu vào không đáng tin. Nó chỉ luôn tạo ra dữ liệu, không bao giờ chạy mã.
undefined, NaN, và Infinity được xử lý như thế nào?
JSON không có các giá trị như vậy. Bạn chọn: undefined có thể trở thành null hoặc bị bỏ khóa, và NaN/Infinity có thể trở thành null hoặc phát ra một lỗi. Điều này giữ output hợp lệ nghiêm ngặt theo cả hai cách.
Điều gì xảy ra khi đầu vào không hợp lệ?
Parser dừng ở lỗi cú pháp thực sự đầu tiên và báo nó cùng dòng và cột nơi nó xảy ra, để bạn có thể định vị và sửa ký tự vi phạm thay vì đoán.

Công cụ khác