Công Cụ Sửa Chữa JSON

Tự động sửa và khôi phục JSON bị hỏng hoặc sai định dạng—an toàn, nhanh chóng và hoàn toàn miễn phí.

Công cụ này sửa chữa JSON bị hỏng hoặc không hợp lệ bằng cách tự động sửa lỗi. Nó nhắm đến các vấn đề cú pháp phổ biến nhất thường gặp trong dữ liệu xuất, nhật ký hoặc các tệp chỉnh sửa thủ công — như thiếu dấu ngoặc kép, dấu phẩy thừa, hoặc dấu ngoặc không khớp — và tạo ra JSON hợp lệ, có thể phân tích cú pháp làm đầu ra.

Sửa lỗi JSON của bạn bên dưới

Cách Hoạt Động của Công Cụ Sửa Chữa JSON

Công cụ quét đầu vào của bạn để phát hiện các lỗi cú pháp JSON phổ biến và áp dụng các bản sửa chữa cụ thể, tạo ra JSON hợp lệ khi có thể.

  1. Phân tích đầu vào và xác định các lỗi cú pháp phổ biến, bao gồm ký tự không hợp lệ, dấu ngoặc đặt sai vị trí và dấu ngoặc kép chuỗi không chính xác.
  2. Áp dụng các sửa lỗi cho những sai sót thường gặp — như thêm dấu ngoặc kép thiếu, loại bỏ dấu phẩy thừa ở cuối, hoặc chỉnh sửa dấu ngoặc cho chính xác.
  3. Xuất ra JSON đã được sửa chữa. Trong hầu hết các trường hợp, kết quả đã sẵn sàng để phân tích cú pháp hoặc sử dụng ngay lập tức.
  4. Nếu cấu trúc không thể tự động sửa chữa, một thông báo lỗi rõ ràng sẽ được hiển thị để bạn có thể điều chỉnh nhập liệu của mình.

Các Lỗi JSON Phổ Biến Và Cách Khắc Phục

Dưới đây là những lỗi JSON phổ biến mà công cụ này có thể sửa chữa, kèm theo ví dụ cho từng lỗi:

Khóa Không Dấu Ngoặc

Các khóa phải được đặt trong dấu ngoặc kép.

Before:
{ name: "Bob" }
After:
{ "name": "Bob" }

Sửa lỗi: Thêm dấu ngoặc kép cho mọi khóa đối tượng chưa được đặt trong dấu ngoặc kép.

Dấu nháy đơn được sử dụng

JSON chỉ chấp nhận dấu ngoặc kép cho chuỗi.

Before:
{ 'vai_trò': 'quản trị viên' }
After:
{ "role": "quản trị viên" }

Sửa lỗi: Thay dấu nháy đơn bằng dấu nháy kép cho tất cả các chuỗi.

Dấu phẩy thừa ở cuối

Không được phép có dấu phẩy sau mục cuối cùng.

Before:
{ "a": 1, "b": 2, }
After:
{ "a": 1, "b": 2 }

Sửa lỗi: Loại bỏ mọi dấu phẩy thừa ở cuối câu.

Dấu ngoặc không khớp hoặc chưa đóng

Tất cả dấu ngoặc và dấu ngoặc nhọn phải được đóng đúng cách.

Before:
[1, 2, 3
After:
[1, 2, 3]

Sửa lỗi: Thêm dấu ngoặc đóng hoặc dấu ngoặc nhọn thiếu.

Dấu phẩy thiếu hoặc thừa

Các phần tử trong mảng và đối tượng phải được phân tách bằng một dấu phẩy duy nhất.

Before:
{ "a": 1 "b": 2 }
After:
{ "a": 1, "b": 2 }

Sửa lỗi: Thêm dấu phẩy bị thiếu hoặc loại bỏ dấu phẩy trùng lặp.

Có các dòng chú thích

Chuẩn JSON không cho phép bình luận (như // hoặc /* ... */).

Before:
{ "id": 1, // ID người dùng
 "active": true }
After:
{ "id": 1, "active": true }

Sửa lỗi: Loại bỏ các dòng chú thích khỏi đầu vào.

Định dạng số không hợp lệ

Chỉ các số thập phân thuần túy mới hợp lệ (không bao gồm NaN, Vô cực hoặc hệ thập lục phân).

Before:
{ "val": NaN }
After:
{ "val": null }

Sửa lỗi: Thay thế các số không hợp lệ bằng giá trị null.

Ký tự điều khiển không thoát

Các ký tự như xuống dòng trong chuỗi phải được thoát.

Before:
{ "msg": "Dòng1
Dòng2" }
After:
{ "msg": "Dòng1\nDòng2" }

Sửa lỗi: Xử lý đúng ký tự điều khiển bằng cách thoát ký tự chính xác.

Khóa Trùng Trong Đối Tượng

Các khóa trùng lặp trong cùng một đối tượng gây ra sự mơ hồ.

Before:
{ "name": "A", "name": "B" }
After:
{ "name": "B" }

Sửa lỗi: Giữ lại chỉ giá trị cuối cùng cho mọi khóa trùng lặp.

Mảng Không Đúng Cấu Trúc

Mảng phải có dấu ngoặc vuông và dấu phẩy giữa các phần tử.

Before:
[ 1 2 3 ]
After:
[ 1, 2, 3 ]

Sửa lỗi: Thêm dấu phẩy thiếu giữa các phần tử trong mảng.

Dữ liệu trống hoặc chỉ chứa khoảng trắng

JSON không được để trống.

Before:
After:
null

Sửa lỗi: Trả về null khi đầu vào trống.

Ví dụ: Từ JSON bị lỗi đến bản sửa chữa hợp lệ

Dữ liệu JSON bị lỗi định dạng
{ user: 'alice', id: 42, roles: [quản trị viên, 'biên tập viên',] // dấu phẩy thừa
 active: true }
Đầu ra JSON đã sửa
{
  "user": "alice",
  "id": 42,
  "roles": [
    "quản trị viên",
    "biên tập viên"
  ],
  "active": true
}

Cách Sử Dụng Công Cụ Sửa Chữa JSON Này

  1. Dán hoặc nhập JSON bị lỗi của bạn vào trình chỉnh sửa bên dưới.
  2. Nhấp vào 'Sửa chữa' để tự động phát hiện và khắc phục các lỗi cú pháp phổ biến.
  3. Xem lại kết quả đã sửa và sao chép JSON đã chỉnh sửa của bạn.

Luôn kiểm tra kỹ JSON đã sửa trước khi sử dụng cho dữ liệu quan trọng — có thể cần điều chỉnh thủ công đối với các dữ liệu phức tạp hoặc bị hư hỏng nghiêm trọng.

Ví dụ mã sửa chữa JSON

Xem cách sửa lỗi JSON trong nhiều ngôn ngữ lập trình khác nhau.

JavaScript (Node.js) with jsonrepair
Install: npm install jsonrepair
const { jsonrepair } = require('jsonrepair');
const broken = '{ name: "Bob", age: 42, }';
const fixed = jsonrepair(broken);
console.log(fixed); // Now valid JSON!
JavaScript (Node.js) simple fix (not for production)
Install: Standard library
let broken = "{ name: 'Bob', age: 42 }";
broken = broken.replace(/(['"])?:([\s]*)([^\s,\{\}\[\]":']+)/g, '"$1$3":');
try {
  let obj = JSON.parse(broken);
  console.log(obj);
} catch (e) {
  console.error('Still broken:', e.message);
}
Python with dirtyjson
Install: pip install dirtyjson
import dirtyjson
broken = "{ name: 'Bob', age: 42 }"
obj = dirtyjson.loads(broken)
print(obj)
Python with demjson3
Install: pip install demjson3
import demjson3
broken = "{ name: 'Bob', age: 42 }"
obj = demjson3.decode(broken)
print(obj)
Go (using otto for JS-like object parsing)
Install: go get github.com/robertkrimen/otto
package main
import (
  "fmt"
  "github.com/robertkrimen/otto"
)
func main() {
  vm := otto.New()
  broken := "{ name: 'Bob', age: 42 }"
  value, err := vm.Run("(" + broken + ")")
  if err != nil {
    fmt.Println("Cannot repair:", err)
  } else {
    obj, _ := value.Export()
    fmt.Println(obj)
  }
}
Java with org.json (manual fix for single quotes)
Install: org.json:json
import org.json.JSONObject;
public class Main {
  public static void main(String[] args) {
    String broken = "{'name': 'Bob', 'age': 42}".replace(''', '"');
    JSONObject obj = new JSONObject(broken);
    System.out.println(obj);
  }
}
C# with Newtonsoft.Json (try-catch, manual fix)
Install: Newtonsoft.Json
using System;
using Newtonsoft.Json;
class Program {
  static void Main() {
    var broken = "{ name: 'Bob', age: 42 }".Replace("'", "\"");
    try {
      var obj = JsonConvert.DeserializeObject(broken);
      Console.WriteLine(obj);
    } catch (Exception ex) {
      Console.WriteLine("Broken JSON: " + ex.Message);
    }
  }
}
PHP (manual fix for single quotes/unquoted keys)
Install: Standard library
<?php
$broken = "{ name: 'Bob', age: 42 }";
$fixed = preg_replace("/'([^"]*)'/", '"$1"', $broken);
$fixed = preg_replace('/([a-zA-Z0-9_]+):/', '"$1":', $fixed);
$obj = json_decode($fixed);
var_dump($obj);
Ruby with json-repair (via gem or shell call)
Install: gem install json-repair or use npx jsonrepair
# Using system call to npx jsonrepair
require 'open3'
broken = "{ name: 'Bob', age: 42 }"
fixed, _ = Open3.capture2("echo #{broken.inspect} | npx jsonrepair")
puts fixed
Bash (npx jsonrepair CLI)
Install: npm install -g jsonrepair
echo "{ name: 'Bob', age: 42 }" | npx jsonrepair
Rust (suggest manual pre-processing)
Install: Standard libraries
// Rust does not have a json repair crate yet. Pre-process string with regex to fix simple cases, then use serde_json.
Kotlin (manual fix, like Java)
Install: org.json:json
import org.json.JSONObject
fun main() {
  var broken = "{ name: 'Bob', age: 42 }".replace("'", "\"")
  broken = Regex("([a-zA-Z0-9_]+):").replace(broken, ""$1":")
  val obj = JSONObject(broken)
  println(obj)
}
TypeScript (Node.js) with jsonrepair
Install: npm install jsonrepair
import { jsonrepair } from 'jsonrepair';
const broken = '{ name: "Bob", age: 42 }';
const fixed = jsonrepair(broken);
console.log(fixed);
Dart (manual string fixes)
Install: Standard library
var broken = "{ name: 'Bob', age: 42 }";
var fixed = broken.replaceAll("'", '"').replaceAllMapped(
  RegExp(r'([a-zA-Z0-9_]+):'),
  (m) => '"${m[ 1 ]}":',
);
print(fixed);
Elixir (manual fix with Regex)
Install: Standard library
broken = "{ name: 'Bob', age: 42 }"
fixed = Regex.replace(~r/'/, broken, """)
fixed = Regex.replace(~r/(\w+):/, fixed, ""\\1":")
IO.puts(fixed)