Sửa JSON
Công cụ Sửa JSON trực tuyến miễn phí. Tự động phát hiện và sửa dấu phẩy cuối, nháy đơn, khóa không nháy, ngoặc chưa đóng, chú thích và bao bọc Markdown. Thiết kế cho làm sạch đầu ra AI và khôi phục JSON bị cắt. Toàn bộ xử lý diễn ra cục bộ trong trình duyệt.
Đề xuất Liên quan
Sửa JSON (JSON Repair) là gì?
Sửa JSON (JSON Repair) là quá trình tự động khôi phục một văn bản JSON không chuẩn, không thể được xử lý bởi trình phân tích cú pháp JSON nghiêm ngặt do lỗi cú pháp, thành một chuỗi JSON hợp lệ tuân thủ RFC 8259. Không giống như 'Định dạng JSON (Beautify)', Sửa JSON không giải quyết sự khác biệt về định dạng mà là các lỗi cấu trúc: dấu phẩy cuối, nháy đơn, thiếu nháy, ngoặc chưa đóng, bao bọc Markdown, chú thích — tất cả đều khiến JSON.parse() ném ra SyntaxError, nhưng cực kỳ phổ biến trong phát triển thực tế.
Các nguồn gốc của JSON 'không chuẩn' trong các dự án kỹ thuật thực tế rất tập trung: ① Khi sao chép từ LLM như ChatGPT / Claude / Gemini, đầu ra thường được bao bọc trong khối mã Markdown (```json ... ```) hoặc kèm theo văn bản giải thích; ② Sao chép từ console.log() của đối tượng JavaScript có thể chứa dấu phẩy cuối và nháy đơn; ③ Tệp cấu hình thường sử dụng cú pháp mở rộng JSON5 / JSONC (cho phép chú thích, khóa không nháy, chuỗi nhiều dòng, v.v.); ④ Phản hồi luồng hoặc cắt nhật ký có thể làm đứt JSON giữa chừng, thiếu `}` hoặc `"` kết thúc. Công cụ Sửa JSON quét văn bản đầu vào, xác định các vấn đề điển hình này và khôi phục nội dung thành JSON chuẩn theo nguyên tắc 'can thiệp tối thiểu', đồng thời bảo toàn ngữ nghĩa dữ liệu gốc nhiều nhất có thể.
Ở cấp độ triển khai, Sửa JSON thường bao gồm hai giai đoạn: ① Phân tích cú pháp khoan dung (tolerant parse) — sử dụng bộ quét dựa trên máy trạng thái thay vì biểu thức chính quy để xử lý từng bước luồng ký tự, phân biệt các ký tự cú pháp 'bên trong chuỗi' và 'bên ngoài chuỗi'; ② Đầu ra chuẩn hóa (canonical output) — tạo lại bằng `JSON.parse` + `JSON.stringify`, đảm bảo đầu ra 100% hợp lệ cho mọi trình phân tích cú pháp nghiêm ngặt hạ nguồn. Công cụ Sửa JSON của GeekFormat hoàn thành toàn bộ quy trình sửa cục bộ trong trình duyệt, không bao giờ gửi nội dung gốc đến bất kỳ máy chủ nào, phù hợp để xử lý phản hồi API nhạy cảm, tệp cấu hình nội bộ và đầu ra mô hình AI.
Trường hợp sử dụng
- Làm sạch đầu ra AI/LLM: chuyển đổi một cú nhấp JSON có bao bọc Markdown, văn bản giải thích và dấu phẩy cuối từ ChatGPT/Claude thành JSON chuẩn
- Gỡ lỗi và khắc phục API: khi phản hồi API bị cắt do sự cố cổng hoặc mạng, nhanh chóng bổ sung ngoặc và chuỗi để xác định cấu trúc dữ liệu gốc
- Literal đối tượng JavaScript sao chép từ console: sửa toàn diện nháy đơn, dấu phẩy cuối và khóa không nháy
- Làm sạch tệp cấu hình: xóa chú thích khỏi JSON5/JSONC để có JSON chuẩn, sẵn sàng kết nối thống nhất với dịch vụ hạ nguồn
- Sửa dữ liệu nhật ký và clipboard: nhanh chóng chuẩn hóa các đoạn JSON chứa chú thích, khoảng trắng đặc biệt hoặc bị cắt
- Tiền xử lý di chuyển dữ liệu và script: thêm bước sửa trong pipeline di chuyển dữ liệu để ngăn một vài JSON không hợp lệ chặn toàn bộ lô ETL
Cách Sử dụng
- Dán nội dung JSON có lỗi, được bao bọc Markdown hoặc bị cắt vào hộp nhập bên trái, hoặc nhấp 'Mẫu' để tải một JSON hỏng điển hình, hoặc tải lên tệp .json/.txt
- Công cụ tự động phát hiện và sửa các vấn đề cú pháp phổ biến; khu vực đầu ra bên phải hiển thị JSON chuẩn đã định dạng và số lượng từng loại vấn đề đã sửa
- Nếu vẫn còn thông báo lỗi màu đỏ, bạn có thể chỉnh sửa thủ công trong khu vực nhập và kích hoạt lại sửa (Mac: ⌘+Shift+R, Windows: Ctrl+Shift+R)
- Sau khi xác nhận cấu trúc chính xác, nhấp 'Sao chép' để đưa kết quả sửa vào clipboard, hoặc nhấp 'Tải xuống' để lưu thành repaired.json để tiếp tục định dạng, xác thực, v.v.
Tính năng
- Bao phủ 7 loại lỗi cú pháp phổ biến: dấu phẩy cuối, nháy đơn, khóa không nháy, chuỗi chưa đóng, chú thích, thiếu ngoặc, bao bọc khối mã Markdown
- Tối ưu làm sạch đầu ra AI: tự động xóa bao bọc ```json và văn bản giải thích bên ngoài khối mã, nhận diện đầu ra điển hình của ChatGPT, Claude, Gemini và các LLM khác
- Tương thích JSON5/JSONC: phân tích cú pháp mở rộng bao gồm chú thích, nháy lỏng và khoảng trắng đặc biệt (như ký tự Unicode vô hình)
- Hoàn thiện thông minh JSON bị cắt: xử lý phản hồi API bị cắt và thiếu ngoặc đóng bằng cách tự động thêm ngoặc và nháy bị thiếu
- Trực quan hóa vấn đề sửa: tự động thống kê và hiển thị số lần mỗi loại vấn đề được sửa, thuận tiện cho kiểm tra và xem xét thủ công
- Xử lý cục bộ bảo vệ quyền riêng tư: phân tích, sửa và định dạng đều diễn ra trong trình duyệt, nội dung đầu vào không gửi đến bất kỳ máy chủ nào
- Chuyển tiếp liền mạch sang định dạng: JSON chuẩn đã sửa có thể chuyển trực tiếp sang Định dạng JSON, Xác thực Schema, tạo mã và các quy trình tiếp theo
- Tải tệp và mẫu: hỗ trợ tải lên tệp .json/.txt hoặc nhấp tải mẫu để nhanh chóng xác minh hiệu quả sửa
Ví dụ mã
Sửa theo chương trình với thư viện JavaScript jsonrepair
javascript// npm install jsonrepair
import { jsonrepair } from 'jsonrepair';
const broken = `{
name: 'Alice',
age: 30,
tags: ['dev', 'writer',], // trailing comma + comment
}`;
try {
const fixed = jsonrepair(broken);
const obj = JSON.parse(fixed);
console.log(obj);
// => { name: 'Alice', age: 30, tags: ['dev', 'writer'] }
} catch (err) {
console.error('Still unrepairable:', err.message);
}Sửa theo chương trình với thư viện Python jsonrepair
python# pip install jsonrepair
from jsonrepair import jsonrepair
import json
broken = '''{
name: "Alice",
age: 30,
tags: ["dev", "writer",], // trailing comma + comment
}'''
fixed = jsonrepair(broken)
obj = json.loads(fixed)
print(obj)
# => {'name': 'Alice', 'age': 30, 'tags': ['dev', 'writer']}Sửa nhanh dấu phẩy cuối với jq + sed (chỉ dùng khẩn cấp)
bash# Xóa dấu phẩy cuối khỏi đối tượng/mảng (tùy chọn khẩn cấp; KHÔNG xử lý chú thích / nháy đơn) # Đối với kịch bản phức tạp, sử dụng thư viện chuyên dụng như jsonrepair sed -E 's/,([ \t]*[}\]])/\1/g' broken.json > clean.json # Xác thực đầu ra đã sửa jq . clean.json >/dev/null && echo 'JSON is valid'
Câu hỏi Thường gặp
Sự khác biệt giữa Sửa JSON và Định dạng JSON là gì?
Định dạng JSON chỉ định dạng lại JSON đã hợp lệ nhưng có thụt lề hoặc khoảng trắng không nhất quán. Ngược lại, Sửa JSON xử lý chuyên biệt JSON có lỗi cú pháp: trước tiên sửa các vấn đề cấu trúc như dấu phẩy cuối, nháy đơn, chú thích và thiếu ngoặc, sau đó xuất ra định dạng chuẩn. Khi công cụ định dạng báo SyntaxError, bạn nên sử dụng Sửa JSON trước.
Công cụ hỗ trợ sửa những lỗi cú pháp JSON phổ biến nào?
Công cụ bao gồm thuật toán sửa thông minh cho các vấn đề thường gặp sau: 1) Dấu phẩy cuối (Trailing comma); 2) Nháy đơn thay vì nháy kép; 3) Khóa không nháy; 4) Chuỗi chưa đóng; 5) Chứa chú thích dòng/khối JavaScript; 6) JSON bị bao bọc trong khối mã Markdown; 7) Thiếu ngoặc đóng do phần cuối bị cắt.
Tại sao JSON đầu ra từ AI hoặc LLM thường không chuẩn?
Các mô hình ngôn ngữ lớn (như ChatGPT, Claude, Gemini) thường tạo JSON với bao bọc Markdown (```json ... ```), văn bản giải thích đầu/cuối, dấu phẩy cuối, chú thích hoặc cấu trúc không hoàn chỉnh do cắt token. Sửa JSON được tối ưu hóa đặc biệt cho các kịch bản này — làm sạch đầu ra AI thành JSON hợp lệ chỉ với một cú nhấp.
JSON đã sửa có luôn giống cấu trúc với dữ liệu gốc không?
Đầu ra đã sửa là một chuỗi JSON hợp lệ tuân thủ tiêu chuẩn JSON; ngữ nghĩa dữ liệu được bảo toàn trong phần lớn trường hợp. Tuy nhiên, vì việc sửa dựa trên quy tắc heuristic, trong các kịch bản cực kỳ hỏng hoặc mơ hồ (ví dụ: nhiều dấu phẩy bị thiếu trên cùng một dòng), kết quả có thể hơi khác so với ý định ban đầu. Đối với dữ liệu quan trọng, nên sử dụng thêm Xác thực Schema hoặc xem xét thủ công.
Tại sao không dùng trực tiếp Python json.loads hoặc JavaScript JSON.parse?
Trình phân tích cú pháp gốc chỉ có thể báo lỗi SyntaxError, không thể sửa. Sửa JSON là lớp khoan dung nằm trước trình phân tích gốc: trước tiên cố gắng sửa văn bản, sau đó chuyển cho trình phân tích gốc, đảm bảo đầu ra cuối cùng có thể được xử lý bởi bất kỳ trình phân tích JSON nghiêm ngặt nào. Ý tưởng tương tự có thể được áp dụng để tiền xử lý phía máy chủ trong môi trường sản xuất.
Chú thích trong JSON5 / JSONC có được giữ lại không?
Không. Chú thích là một phần của cú pháp mở rộng JSON5, không phải JSON chuẩn; công cụ sẽ xóa chúng để đảm bảo đầu ra tuân thủ JSON chuẩn. Nếu bạn muốn giữ chú thích, hãy tiếp tục sử dụng tệp nguồn JSON5 hoặc chuỗi công cụ JSONC. Nếu bạn cần chuyển JSON5 thành JSON chuẩn, công cụ này thực hiện trực tiếp.
JSON bị cắt (ví dụ: đầu ra luồng bị ngắt) có sửa được không?
Có. Công cụ cố gắng khớp các ngoặc đóng, ngoặc vuông và nháy đóng chuỗi bị thiếu, đồng thời bảo toàn nội dung đã nhận diện nhiều nhất có thể. Lưu ý: nếu điểm cắt nằm bên trong một literal chuỗi, bạn có thể cần bổ sung thủ công các ký tự quan trọng.
Sau khi sửa có bị mất dữ liệu không?
Trong các kịch bản sửa phổ biến (xóa dấu phẩy cuối, thêm nháy, bổ sung ngoặc, xóa chú thích), ngữ nghĩa dữ liệu được bảo toàn hoàn toàn. Trong trường hợp hiếm hoi, khi nội dung gốc có sự mơ hồ không thể đảo ngược (ví dụ: mức lồng ghép bị phá hủy), công cụ sẽ sửa một cách bảo thủ nhất có thể và giữ nguyên trạng thái gốc; không chủ động xóa trường hoặc khóa.
Có thể sửa hàng loạt nhiều JSON không?
Công cụ này sửa từng đầu vào một. Đối với kịch bản hàng loạt, nên chạy thuật toán cơ bản cục bộ trong script (như thư viện jsonrepair của Python hoặc gói npm josdejong/jsonrepair), sau đó nhập kết quả vào công cụ này để xác minh thủ công và định dạng.
Sau khi sửa có cần định dạng và Xác thực Schema nữa không?
Khuyến nghị. Sửa chủ yếu giải quyết lỗi ở cấp độ cú pháp; định dạng và Xác thực Schema đảm bảo khả năng đọc và tính chính xác nghiệp vụ. Đầu ra của công cụ sửa kết nối liền mạch với Định dạng JSON, Xác thực Schema và trình tạo mã của GeekFormat.
Công cụ có tải JSON của tôi lên máy chủ không?
Không. Tất cả phân tích, sửa và định dạng đều diễn ra cục bộ trong trình duyệt; cả đầu vào và kết quả trung gian đều không được gửi đến bất kỳ máy chủ nào. Hoạt động ngoại tuyến, phù hợp để xử lý JSON chứa thông tin nhạy cảm (như phản hồi API môi trường sản xuất, cấu hình nội bộ).
Có thể cố định chiến lược sửa được sử dụng mỗi lần không?
Công cụ này mặc định bật tất cả các quy tắc sửa phổ biến để tối đa hóa tỷ lệ thành công. Nếu bạn cần kiểm soát tinh chỉnh các quy tắc cho một ngôn ngữ hoặc nhóm cụ thể, bạn có thể sử dụng thư viện jsonrepair trong môi trường sản xuất của mình và bật hoặc tắt có chọn lọc các quy tắc nhất định. Đầu ra của công cụ này cũng có thể dùng làm đầu vào chuẩn hóa cho xác thực tiếp theo.
Xử lý sự cố
Lỗi "Không thể sửa JSON này"
Nguyên nhân: văn bản đầu vào có hư hỏng cấu trúc nghiêm trọng, chẳng hạn như nhiều ngoặc bị thiếu, literal chuỗi bị cắt hoặc bộ ký tự bị hỏng. Giải pháp: trước tiên mở tệp gốc trong trình soạn thảo văn bản thuần, xác nhận mã hóa là UTF-8 không BOM và không phải tệp nhị phân nén; nếu dữ liệu đến từ phản hồi API, liên hệ nguồn để bổ sung; đối với tập dữ liệu cực kỳ hỏng, sử dụng trực tiếp tệp nguồn.
Trường bị di chuyển đến vị trí sai sau khi sửa
Nguyên nhân: văn bản gốc chứa ký tự cú pháp JSON (như //, /*, }) bên trong chú thích hoặc literal chuỗi, khiến trình phân tích cú pháp đánh giá sai; hoặc mức lồng ghép quá sâu khiến khớp ngoặc bị sai. Giải pháp: thoát thủ công // và /* bên trong chuỗi bằng dấu gạch chéo ngược; đối với dữ liệu lồng sâu, thêm ngoặc tạm thời bên ngoài hoặc ngắt dòng trước khi sửa lại.
Văn bản giải thích trong đầu ra AI không bị xóa
Nguyên nhân: đầu ra AI thường bắt đầu/kết thúc bằng ngôn ngữ tự nhiên (ví dụ: "Đây là kết quả:") và có thể trải dài nhiều dòng. Giải pháp: sử dụng trình soạn thảo văn bản để xóa văn bản bên ngoài khối JSON, chỉ giữ nội dung bên trong bao bọc ```json ngoài cùng; nếu công cụ vẫn không nhận diện được, thêm thủ công { } ngoài cùng trước khi sửa lại.
Kích thước không thay đổi sau khi sửa hoặc một số ký tự bị thay thế
Nguyên nhân: bản gốc chứa dấu gạch chéo ngược, thoát Unicode hoặc thực thể HTML, được công cụ thoát lại theo quy tắc JSON. Giải pháp: kiểm tra xem bản gốc có bị lồng trong chuỗi JS không; nếu nằm trong trang HTML, giải mã HTML trước; số ký tự tăng sau khi thoát là bình thường.
Trình duyệt hiển thị "Không đủ bộ nhớ" hoặc trang bị treo
Nguyên nhân: đầu vào đơn vượt quá 5–10 MB gây áp lực bộ nhớ đáng kể cho trình duyệt. Giải pháp: chia dữ liệu thành các lô nhỏ hơn (mỗi lô 1–2 MB); hoặc sử dụng thư viện jsonrepair phía máy chủ để xử lý luồng; sự khác biệt nhỏ giữa kết quả sửa và bản gốc là bình thường.
Sau khi sửa, Xác thực Schema vẫn báo lỗi
Nguyên nhân: Sửa JSON chỉ giải quyết lỗi cấp độ cú pháp; không kiểm tra tên trường nghiệp vụ, kiểu hoặc giá trị có tuân thủ Schema không. Giải pháp: sử dụng công cụ Xác thực JSON Schema của GeekFormat để kiểm tra ràng buộc trường; xác định vị trí trường cụ thể theo lỗi và sửa thủ công.
Thuật ngữ
- JSON
- JavaScript Object Notation, định dạng trao đổi dữ liệu nhẹ dựa trên cặp khóa-giá trị, được định nghĩa trong RFC 8259. Tiêu chuẩn thực tế cho REST API, tệp cấu hình và nhật ký.
- RFC 8259
- Đặc tả JSON chính thức do IETF phát hành, định nghĩa cú pháp nghiêm ngặt của JSON hợp lệ — tất cả khóa phải nằm trong nháy kép, chỉ một số ký tự giới hạn trong chuỗi cần thoát, không cho phép chú thích và dấu phẩy cuối.
- JSON.parse
- Trình phân tích cú pháp JSON nghiêm ngặt được tích hợp trong JavaScript và trình duyệt hiện đại, tuân theo RFC 8259. Ném SyntaxError trực tiếp khi gặp bất kỳ lỗi cú pháp nào và không thể sửa khoan dung.
- JSON5
- Cú pháp mở rộng của JSON (không chuẩn), cho phép khóa không nháy, chuỗi nháy đơn, chú thích (// và /* */), dấu phẩy cuối, số thập lục phân, v.v. Dễ viết hơn cho con người nhưng không tương thích với JSON.parse.
- JSONC
- JSON with Comments, tên gọi chung được các trình soạn thảo như VS Code sử dụng cho tệp cấu hình JSON có chú thích (như tsconfig.json). Thực chất là một bí danh phổ biến của JSON5.
- Trailing Comma / Dấu phẩy cuối
- Dấu phẩy thừa sau phần tử cuối cùng của đối tượng hoặc mảng. Được phép trong JavaScript nhưng bị cấm bởi tiêu chuẩn JSON — lỗi cú pháp phổ biến nhất từ đầu ra LLM và sao chép console.log().
- Khối mã Markdown
- Đoạn mã được bao bọc bởi ba dấu backtick (```). LLM thường tự động bao bọc đầu ra JSON trong ```json ... ```; dán trực tiếp vào JSON.parse() sẽ thất bại.
- Tolerant Parser / Trình phân tích khoan dung
- Trình phân tích cú pháp có khả năng cố gắng khôi phục và tiếp tục phân tích khi gặp lỗi cú pháp. Công cụ cốt lõi của Sửa JSON, khác với JSON.parse nghiêm ngặt.
- SyntaxError
- Ngoại lệ lỗi cú pháp được ném bởi JavaScript. Bất kỳ trình phân tích cú pháp JSON nghiêm ngặt nào cũng ném lỗi này khi nhận đầu vào không tuân thủ RFC 8259.
- Canonical JSON / JSON chuẩn hóa
- JSON được tạo lại qua parse + stringify, với thứ tự khóa ổn định, không có khoảng trắng thừa và 100% tương thích với trình phân tích cú pháp chuẩn. Định dạng đầu ra cuối cùng của công cụ Sửa JSON.
Các loại lỗi Sửa JSON phổ biến và ví dụ
| Loại lỗi | Trước | Sau | Cách sửa |
|---|---|---|---|
| Dấu phẩy cuối | { "a": 1, } | { "a": 1 } | Xóa dấu phẩy sau phần tử cuối cùng |
| Nháy đơn | { 'a': 1 } | { "a": 1 } | Thay tất cả nháy đơn bằng nháy kép |
| Khóa không nháy | { a: 1 } | { "a": 1 } | Thêm nháy kép cho tên khóa |
| Chú thích dòng | { // chú thích
"a": 1 } | { "a": 1 } | Xóa toàn bộ dòng chú thích // |
| Chú thích khối | { /* khối */ "a": 1 } | { "a": 1 } | Xóa chú thích khối /* */ |
| Bao bọc Markdown | ```json
{ "a": 1 }
``` | { "a": 1 } | Xóa bao bọc ```json và ``` |
| Chuỗi chưa đóng | { "a": "hello } | { "a": "hello" } | Thêm nháy đóng chuỗi bị thiếu |
| Thiếu ngoặc | { "a": 1 | { "a": 1 } | Khớp ngăn xếp để thêm ngoặc đóng bị thiếu |
Sửa JSON vs Định dạng JSON vs Xác thực JSON Schema
| Công cụ | Giải quyết vấn đề gì | Yêu cầu đầu vào | Chế độ thất bại |
|---|---|---|---|
| Sửa JSON | Chuyển JSON lỗi cú pháp thành JSON hợp lệ | Khoan dung, chấp nhận JSON không chuẩn | Báo lỗi khi quá hỏng để đoán cấu trúc |
| Định dạng JSON | Định dạng lại JSON hợp lệ | Phải là JSON đã hợp lệ | SyntaxError được ném trực tiếp |
| Nén JSON | Xóa khoảng trắng, giảm kích thước | Phải là JSON đã hợp lệ | SyntaxError được ném trực tiếp |
| Xác thực JSON Schema | Kiểm tra kiểu/giá trị trường so với quy tắc nghiệp vụ | Phải là JSON đã hợp lệ | Liệt kê từng trường vi phạm quy tắc |
| JSON Merge / Sort | Hợp nhất đa nguồn / sắp xếp khóa | Phải là JSON đã hợp lệ | SyntaxError được ném trực tiếp |
Authoritative References
- Nén JSON
- CSV sang JSON
- JSON sang CSV
- JSON Diff
- JSON Escape / Unescape
- Làm phẳng JSON
- Trình định dạng JSON
- Trinh tao JSON
- Truy vấn JSONPath
- Gộp JSON
- Sửa JSON
- Trình Xác Thực JSON Schema
- Sắp xếp JSON
- JSON Stringify
- JSON sang HTML
- JSON sang Java
- JSON sang Markdown
- JSON sang SQL
- JSON sang TOML
- JSON sang TypeScript
- XML sang JSON
- Chuyen JSON sang XML
- YAML sang JSON
- JSON → YAML
- JSON sang Go
- JSON sang Rust
- JSON sang Swift
- JSON sang C#
- JSON sang C++
- JSON sang PHP
- JSON sang Python