Trình định dạng JSON
Làm đẹp, thu gọn và kiểm tra tính hợp lệ của JSON - và khi không thể phân tích cú pháp, cho biết chính xác vị trí lỗi.
Đầu vào
0 ký tựĐầu ra
Làm đẹp, thu gọn và kiểm tra tính hợp lệ của JSON - và khi không thể phân tích cú pháp, cho biết chính xác vị trí lỗi.
JSON xuất ra từ nhật ký API hay tệp cấu hình thường là một dòng dài duy nhất, và JSON không phân tích được thường thất bại ở đâu đó mà bạn không thấy được. Công cụ này thụt lề nó để bạn có thể đọc, thu gọn nó khi bạn cần nhỏ gọn, và khi nó bị lỗi, công cụ cho bạn biết dòng và cột rồi hiển thị dòng đó.
Phần lớn thời gian bạn không ở đây để làm cho JSON đẹp hơn - bạn ở đây vì một thứ gì đó đã từ chối nó mà không nói lý do. Trình phân tích báo cáo dòng, cột và những gì nó mong đợi, và công cụ in dòng đó cùng với hai dòng xung quanh. Một dấu phẩy bị thiếu ở dòng thứ bốn trăm trong một cấu hình là một sửa lỗi ba mươi giây một khi bạn biết nó ở đâu.
JSON chưa bao giờ cho phép cả hai, nhưng các tệp mà mọi người thực sự đưa cho bạn - tsconfig, cài đặt VS Code, bất cứ thứ gì được chỉnh sửa thủ công - đều đầy chúng. Đánh dấu tùy chọn này sẽ loại bỏ chúng trước khi phân tích, và công cụ sau đó cho biết nó đã loại bỏ bao nhiêu chú thích và bao nhiêu dấu phẩy. Đây là tùy chọn và được báo cáo chính xác vì một trình định dạng âm thầm thay đổi tài liệu của bạn còn tệ hơn một trình từ chối nó.
Nó không đoán ý bạn muốn nói gì. Ngoài hai việc loại bỏ ở trên, không có gì được sửa chữa: một dấu ngoặc nhọn chưa đóng, một khóa trong dấu nháy đơn hoặc một khóa không có dấu nháy được báo cáo, không được viết lại. Sắp xếp khóa và thụt lề lại không bao giờ đổi thứ tự một mảng hay thay đổi một chuỗi. Phần tiếp theo liệt kê vài trường hợp mà kết quả vẫn có thể khác với những gì bạn đã dán.
JSON của bạn được phân tích rồi ghi lại, nên một số thứ trở về ở dạng chuẩn hóa. Các số được ghi lại: 1.50 thành 1.5, 1E3 thành 1000.0 và -0 thành 0, còn số thập phân có nhiều chữ số hơn mức một số float 64 bit chứa được sẽ bị làm tròn (0.1000000000000000055 thành 0.1). Số nguyên được giữ chính xác đến 4.300 chữ số (dài hơn sẽ bị từ chối). Nếu một đối tượng lặp lại một khóa, chỉ giá trị cuối cùng được giữ, không có cảnh báo. NaN, Infinity và -Infinity được chấp nhận và giữ nguyên dù JSON chuẩn (RFC 8259) không cho phép chúng, và một số quá lớn đối với float, như 1e400, sẽ ra thành Infinity. Nếu điều nào trong số này quan trọng với hệ thống bạn sắp đưa dữ liệu vào, hãy tự kiểm tra trước khi tin vào một kết quả không có lỗi.
Nó được gửi đến máy chủ để phân tích và gửi thẳng lại trong cùng một phản hồi. Không có gì được ghi vào đĩa, lưu vào bộ nhớ đệm hay ghi nhật ký, và bản ghi sử dụng chỉ giữ số liệu đếm - kích thước, độ sâu lồng nhau, chế độ đã chọn - không bao giờ là tài liệu.
Thường là do chú thích, dấu phẩy thừa ở cuối, dấu nháy đơn hoặc khóa không có dấu nháy - tất cả đều phổ biến trong tệp cấu hình và không cái nào là JSON hợp lệ. Đánh dấu "cho phép chú thích và dấu phẩy thừa ở cuối" cho hai trường hợp đầu; các trường hợp còn lại thực sự không hợp lệ và phải được sửa.
Tối đa 2.000.000 ký tự mỗi yêu cầu; văn bản dài hơn bị từ chối kèm độ dài chính xác của nó. Với tệp cỡ đó, một công cụ dòng lệnh như jq là lựa chọn tốt hơn.
Các pipeline nhật ký và trình tải luồng đọc một đối tượng JSON trên mỗi dòng thay vì một mảng lớn duy nhất. Chọn nó và một mảng cấp cao nhất sẽ trả về dưới dạng một bản ghi gọn trên mỗi dòng.
Không. Thứ tự khóa của đối tượng không có ý nghĩa trong JSON, và thứ tự mảng - vốn có ý nghĩa - không bao giờ bị thay đổi. Việc sắp xếp tồn tại để hai phiên bản của cùng một tài liệu có thể được so sánh mà không có nhiễu.
Trong Excel cho Microsoft 365, lưu nó thành file .json rồi chọn Data > Get Data > From File > From JSON. Power Query sẽ mở ra: mảng cấp cao nhất hiện dưới dạng List, To Table biến nó thành một cột Records, và nút mở rộng (hai mũi tên) ở tiêu đề cột tách mỗi khóa ra một cột riêng; mở rộng một mảng lồng nhau sẽ thêm một hàng cho mỗi phần tử. Power Query cần đúng một tài liệu JSON hợp lệ, vì vậy hãy sửa lỗi ở đây trước, nơi bạn thấy dòng và cột, rồi lưu kết quả Làm đẹp hoặc Rút gọn; đầu ra JSON Lines dành cho công cụ log. Bản thân công cụ này không chuyển JSON sang CSV hay Excel.
Python có sẵn công cụ kiểm tra: python -m json.tool data.json in tài liệu với thụt lề 4 dấu cách, hoặc dừng lại với thông báo như Expecting ',' delimiter: line 3 column 3. Nếu đã cài jq, jq . data.json định dạng tài liệu còn jq empty data.json chỉ kiểm tra và không in gì khi tệp hợp lệ. Cả hai đều không chấp nhận chú thích hay dấu phẩy ở cuối, nên tệp cấu hình có những thứ đó sẽ báo lỗi; hãy dán nó vào đây và đánh dấu "Cho phép chú thích và dấu phẩy ở cuối" để xem những gì đã bị bỏ đi.
Trình phân tích đang chờ một khóa của đối tượng nhưng lại gặp thứ khác. Thường là khóa dùng dấu nháy đơn hoặc không có dấu nháy, như {'name': 'Asha'} sao chép từ Python hay JavaScript, sẽ dừng ở dòng 1, cột 2: JSON yêu cầu dấu nháy kép quanh mọi khóa và chuỗi, và công cụ này không bao giờ tự sửa dấu nháy, nên bạn cần tự đổi. Cùng thông báo đó ở một dấu ngoặc nhọn đóng, như trong {"a": 1,}, nghĩa là có dấu phẩy ở cuối; hãy đánh dấu "Cho phép chú thích và dấu phẩy ở cuối" để bỏ nó. Expecting value ở True, False hoặc None nghĩa là giá trị của Python: JSON viết true, false và null bằng chữ thường. Trong Python, json.dumps(data) cho ra JSON hợp lệ còn print(data) thì không. Lỗi được hiển thị đúng như trình phân tích của Python viết, bằng tiếng Anh, để bạn có thể tìm kiếm nguyên văn thông báo.
Trình phân tích đã đọc xong một giá trị JSON hoàn chỉnh rồi gặp thêm văn bản phía sau. Nguyên nhân thường gặp: một tệp log JSON Lines (NDJSON) mỗi dòng một đối tượng, dừng ở dòng 2, cột 1; hai tài liệu dán liền nhau; hoặc một chú thích // sau dấu ngoặc nhọn đóng cuối cùng, thứ mà "Cho phép chú thích và dấu phẩy ở cuối" sẽ bỏ đi. Công cụ này kiểm tra từng tài liệu một, nên hãy dán một bản ghi, hoặc đặt các bản ghi trong [ ] và ngăn cách bằng dấu phẩy; chọn JSON Lines thì chúng lại được ghi ra mỗi dòng một bản ghi.