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

  1. 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
  2. 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
  3. 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)
  4. 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ỗiTrướcSauCá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àoChế độ thất bại
Sửa JSONChuyển JSON lỗi cú pháp thành JSON hợp lệKhoan dung, chấp nhận JSON không chuẩnBá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 JSONXóa khoảng trắng, giảm kích thướcPhải là JSON đã hợp lệSyntaxError được ném trực tiếp
Xác thực JSON SchemaKiể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 / SortHợp nhất đa nguồn / sắp xếp khóaPhải là JSON đã hợp lệSyntaxError được ném trực tiếp

Authoritative References