Alat za popravku JSON-a
Automatski popravi i oporavi oštećeni ili neispravan JSON—sigurno, brzo i besplatno.
Ovaj alat popravlja oštećeni ili neispravan JSON pomoću automatske ispravke grešaka. Cilja na najčešće probleme sa sintaksom koji se javljaju u izvezenim podacima, logovima ili ručno uređivanim fajlovima — kao što su nedostajući navodnici, suvišni zarezi ili nepodudarni zagrade — i generiše validan, parsabilan JSON kao rezultat.
Popravite svoj JSON ispod
Kako funkcioniše popravka JSON-a
Alat pregledava vaš unos kako bi otkrio uobičajene greške u JSON sintaksi i primenjuje ciljane ispravke, omogućavajući proizvodnju validnog JSON-a kada je to moguće.
- Analizira unos i pronalazi uobičajene sintaksne greške, uključujući nelegalne karaktere, pogrešno postavljene zagrade i nepravilne navodnike kod stringova.
- Primjenjuje ispravke za česte greške—kao što su dodavanje nedostajućih navodnika, uklanjanje zarezâ na kraju, ili ispravljanje zagrada.
- Izlaz predstavlja ispravljeni JSON. U većini slučajeva, rezultat je spreman za trenutnu obradu ili upotrebu.
- Ako se struktura ne može automatski popraviti, prikazuje se jasna greška kako biste mogli da prilagodite svoj unos.
Uobičajene greške u JSON-u i kako ih ispraviti
Evo uobičajenih JSON grešaka koje ovaj alat može da ispravi, sa primerima za svaku:
Ključevi bez navodnika
Ključevi moraju biti u dvostrukim navodnicima.
{ name: "Bob" }
{ "name": "Bob" }
Ispravka: Dodaje navodnike oko svih neoznačenih ključeva objekta.
Koršćeni jednostruki navodnici
JSON prihvata samo navodnike u obliku dvostrukih znakova za stringove.
{ 'uloga': 'administrator' }
{ "role": "administrator" }
Popravka: Zamenjuje jednostruke navodnike dvostrukim navodnicima za sve stringove.
Poslednje zareze
Nakon poslednje stavke nije dozvoljena zarez.
{ "a": 1, "b": 2, }
{ "a": 1, "b": 2 }
Ispravka: Uklanja sve zareze na kraju.
Neusklađene ili Nezatvorene Zagrade
Sve zagrade i vitičaste zagrade moraju biti pravilno zatvorene.
[1, 2, 3
[1, 2, 3]
Ispravka: Dodaje nedostajuće zatvarajuće zagrade ili viticaste zagrade.
Nedostajući ili suvišni zarezi
Stavke u nizu i objektu moraju biti odvojene jednim zarezom.
{ "a": 1 "b": 2 }
{ "a": 1, "b": 2 }
Ispravi: Ubacuje nedostajuće zareze ili uklanja duplikate.
Prisustvo komentarskih linija
Standardni JSON ne dozvoljava komentare (kao što su // ili /* ... */).
{ "id": 1, // ID korisnika "aktivno": true }
{ "id": 1, "aktivno": tačno }
Ispravka: Uklanja linije sa komentarima iz unosa.
Nevažeći formati brojeva
Dozvoljeni su samo obični decimalni brojevi (bez NaN, beskonačnosti ili heksadecimalnih vrednosti).
{ "val": NaN }
{ "val": null }
Ispravka: Nevažeći brojevi zamenjeni sa null vrednošću.
Nekontrolisani kontrolni karakteri
Znakovi poput preloma linije u nizovima moraju biti escapeovani.
{ "msg": "PrvaLinija DrugaLinija" }
{ "msg": "Linija1\nLinija2" }
Ispravljeno: Ispravno izbegavanje kontrolnih karaktera.
Duplirani ključevi u objektu
Duplikatni ključevi u istom objektu izazivaju dvosmislenost.
{ "name": "A", "name": "B" }
{ "name": "B" }
Ispravljeno: Čuva samo poslednju vrednost za svaki duplikat ključa.
Neispravno formirani nizovi
Nizovi moraju imati uglaste zagrade i zareze između stavki.
[ 1 2 3 ]
[ 1, 2, 3 ]
Ispravka: Dodavanje nedostajućih zareza između elemenata niza.
Prazan unos ili samo razmaci
JSON ne sme biti prazan.
nul
Ispravka: Vraća null za prazan unos.
Primer: Od Pokvarenog JSON-a do Ispravnog Popravka
{ user: 'alice', id: 42, roles: [admin, 'urednik',] // dodatna zapeta active: true }Popravljen JSON Izlaz
{ "korisnik": "alice", "id": 42, "uloge": [ "administrator", "urednik" ], "aktivan": true }
Kako koristiti ovaj alat za popravku JSON-a
- Nalepite ili otkucajte svoj neispravan JSON u uređivač ispod.
- Kliknite na 'Popravi' da automatski otkrijete i ispravite česte sintaksne greške.
- Pregledajte popravljeni rezultat i kopirajte svoj ispravljeni JSON.
Uvek proverite popravljeni JSON pre upotrebe za kritične podatke — može biti potrebno ručno prilagođavanje za složene ili jako oštećene unose.
Primeri koda za popravku JSON-a
Pogledajte kako popraviti JSON u različitim programskim jezicima.
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)