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ể.
- 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.
- Á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.
- 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.
- 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.
{ name: "Bob" }
{ "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.
{ 'vai_trò': 'quản trị viên' }
{ "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.
{ "a": 1, "b": 2, }
{ "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.
[1, 2, 3
[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.
{ "a": 1 "b": 2 }
{ "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 /* ... */).
{ "id": 1, // ID người dùng "active": true }
{ "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).
{ "val": NaN }
{ "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.
{ "msg": "Dòng1 Dòng2" }
{ "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ồ.
{ "name": "A", "name": "B" }
{ "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ử.
[ 1 2 3 ]
[ 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.
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ệ
{ 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
- 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.
- 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.
- 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.
const { jsonrepair } = require('jsonrepair');
const broken = '{ name: "Bob", age: 42, }';
const fixed = jsonrepair(broken);
console.log(fixed); // Now valid JSON!
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);
}
import dirtyjson
broken = "{ name: 'Bob', age: 42 }"
obj = dirtyjson.loads(broken)
print(obj)
import demjson3
broken = "{ name: 'Bob', age: 42 }"
obj = demjson3.decode(broken)
print(obj)
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)
}
}
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);
}
}
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
$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);
# Using system call to npx jsonrepair
require 'open3'
broken = "{ name: 'Bob', age: 42 }"
fixed, _ = Open3.capture2("echo #{broken.inspect} | npx jsonrepair")
puts fixed
echo "{ name: 'Bob', age: 42 }" | npx jsonrepair
// Rust does not have a json repair crate yet. Pre-process string with regex to fix simple cases, then use serde_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)
}
import { jsonrepair } from 'jsonrepair';
const broken = '{ name: "Bob", age: 42 }';
const fixed = jsonrepair(broken);
console.log(fixed);
var broken = "{ name: 'Bob', age: 42 }";
var fixed = broken.replaceAll("'", '"').replaceAllMapped(
RegExp(r'([a-zA-Z0-9_]+):'),
(m) => '"${m[ 1 ]}":',
);
print(fixed);
broken = "{ name: 'Bob', age: 42 }"
fixed = Regex.replace(~r/'/, broken, """)
fixed = Regex.replace(~r/(\w+):/, fixed, ""\\1":")
IO.puts(fixed)