Alat Pembaikan JSON
Betulkan dan pulihkan JSON yang rosak atau tidak teratur secara automatik—dengan selamat, pantas, dan percuma.
Alat ini membaiki JSON yang rosak atau tidak sah menggunakan pembetulan ralat automatik. Ia menyasarkan masalah sintaks yang paling biasa ditemui dalam data yang dieksport, log, atau fail yang disunting secara manual—seperti tanda petik yang hilang, koma yang tersasar, atau kurungan yang tidak sepadan—dan menghasilkan JSON yang sah serta boleh diurai sebagai output.
Baiki JSON anda di bawah
Bagaimana Pembaikan JSON Berfungsi
Alat ini mengimbas input anda untuk masalah sintaks JSON yang biasa dan menerapkan pembetulan khusus, menghasilkan JSON yang sah apabila boleh.
- Mengurai input dan mengesan kesilapan tatabahasa yang biasa, termasuk aksara haram, kurungan yang diletakkan salah, dan tanda petik string yang tidak tepat.
- Menerapkan pembetulan untuk kesilapan yang kerap berlaku—seperti menambah petikan yang hilang, membuang koma yang berlebihan, atau membetulkan kurungan.
- Mengeluarkan JSON yang telah diperbaiki. Dalam kebanyakan kes, hasilnya sedia untuk diparse atau guna serta-merta.
- Jika struktur tidak dapat dibaiki secara automatik, ralat yang jelas akan dipaparkan supaya anda boleh menyesuaikan input anda.
Ralat JSON Biasa dan Cara Memperbaikinya
Berikut adalah kesilapan JSON biasa yang alat ini boleh baiki, dengan contoh untuk setiap satu:
Kunci Tanpa Petikan
Kunci mesti dalam tanda petik berganda.
{ nama: "Bob" }
{ "name": "Bob" }
Betulkan: Menambah tanda petik berganda di sekeliling sebarang kunci objek yang tidak dinamakan dengan petikan.
Petikan Tunggal Digunakan
JSON hanya menerima tanda petik dua untuk rentetan.
{ 'role': 'admin' }
{ "role": "pentadbir" }
Betulkan: Gantikan tanda petik tunggal dengan tanda petik berganda untuk semua rentetan.
Koma Susulan
Tiada koma dibenarkan selepas item terakhir.
{ "a": 1, "b": 2, }
{ "a": 1, "b": 2 }
Betulkan: Buang mana-mana koma yang terletak di hujung.
Tanda Kurung Tidak Padan atau Tidak Ditutup
Semua tanda kurungan dan kurungan kerinting mesti ditutup dengan betul.
[1, 2, 3
[1, 2, 3]
Betulkan: Menambah tanda tutup kurungan atau tanda kurungan kurawal yang hilang.
Koma Hilang atau Berlebihan
Item dalam array dan objek mesti dipisahkan oleh satu koma sahaja.
{ "a": 1 "b": 2 }
{ "a": 1, "b": 2 }
Betulkan: Masukkan koma yang hilang, atau buang pendua.
Baris Komen Dikesan
JSON standard tidak membenarkan komen (seperti // atau /* ... */).
{ "id": 1, // ID pengguna "active": benar }
{ "id": 1, "aktif": benar }
Betulkan: Buang baris komen daripada input.
Format Nombor Tidak Sah
Hanya nombor perpuluhan biasa yang sah (tiada NaN, Infiniti, atau heksadesimal).
{ "val": NaN }
{ "val": null }
Betulkan: Gantikan nombor tidak sah dengan null.
Aksara Kawalan Tidak Terpapar
Aksara seperti baris baru dalam rentetan mesti diisikan dengan escape.
{ "msg": "Baris1 Baris2" }
{ "msg": "Baris1\nBaris2" }
Baiki: Melarikan watak kawalan dengan betul.
Kunci Berganda dalam Objek
Kunci pendua dalam objek yang sama menyebabkan kekeliruan.
{ "name": "A", "name": "B" }
{ "name": "B" }
Betulkan: Simpan hanya nilai terakhir untuk sebarang kekunci berganda.
Array Tidak Teratur
Tatasusunan mesti mempunyai tanda kurungan dan koma antara setiap item.
[ 1 2 3 ]
[ 1, 2, 3 ]
Betulkan: Menambah koma yang hilang antara elemen array.
Input Kosong atau Semua Ruang Putih
JSON tidak boleh kosong.
null
Pembaikan: Mengembalikan nilai kosong untuk input kosong.
Contoh: Dari JSON Rosak ke Pembetulan Sah
{ pengguna: 'alice', id: 42, peranan: [pentadbir, 'penyunting',] // koma tambahan aktif: benar }Output JSON yang Dibaiki
{ "user": "alice", "id": 42, "roles": [ "pentadbir", "penyunting" ], "active": true }
Cara Menggunakan Alat Pembaikan JSON Ini
- Tampal atau taip JSON yang rosak anda ke dalam penyunting di bawah.
- Klik 'Baiki' untuk mengesan dan membaiki kesalahan sintaks biasa secara automatik.
- Semak semula hasil yang diperbaiki dan salin JSON yang telah anda betulkan.
Sentiasa semak JSON yang telah dibaiki sebelum menggunakannya untuk data penting—penyesuaian manual mungkin diperlukan untuk input yang kompleks atau sangat rosak.
Contoh Kod untuk Pembetulan JSON
Lihat cara membaiki JSON dalam pelbagai bahasa pengaturcaraan.
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)