Nástroj na opravu JSON
Automaticky opraviť a obnoviť poškodený alebo nesprávne vytvorený JSON – rýchlo, bezpečne a zadarmo.
Tento nástroj opravuje poškodený alebo neplatný JSON pomocou automatizovanej korekcie chýb. Zameriava sa na najčastejšie syntaktické problémy v exportovaných dátach, logoch alebo ručne upravovaných súboroch — ako chýbajúce úvodzovky, nesprávne čiarky či nezhodné zátvorky — a vytvára platný, spracovateľný JSON ako výsledok.
Opravte svoj JSON nižšie
Ako funguje oprava JSON
Nástroj analyzuje váš vstup na bežné chyby syntaxe JSON a aplikuje cielené opravy, čím zabezpečuje platný JSON vždy, keď je to možné.
- Analyzuje vstup a zistí bežné syntaktické chyby, vrátane nelegálnych znakov, nesprávne umiestnených zátvoriek a nesprávnych úvodzoviek v reťazcoch.
- Uplatňuje opravy častých chýb – napríklad pridanie chýbajúcich úvodzoviek, odstránenie nadbytočných čiarkok alebo opravu zátvoriek.
- Výstupom je opravený JSON. Vo väčšine prípadov je výsledok pripravený na okamžité parsovanie alebo použitie.
- Ak nie je možné štruktúru automaticky opraviť, zobrazí sa jasná chyba, aby ste mohli upraviť svoj vstup.
Bežné chyby v JSON a ako ich opraviť
Tu sú bežné chyby v JSON, ktoré tento nástroj dokáže opraviť, spolu s príkladmi pre každú z nich:
Neuvoľnené kľúče
Kľúče musia byť v dvojitých úvodzovkách.
{ name: "Bob" }
{ "name": "Bob" }
Oprava: Pridáva úvodzovky okolo všetkých neoznačených kľúčov objektov.
Použité jednoduché úvodzovky
JSON akceptuje pre reťazce iba úvodzovky.
{ 'role': 'administrátor' }
{ "role": "administrátor" }
Oprava: Nahrádza jednoduché úvodzovky za dvojité úvodzovky vo všetkých reťazcoch.
Následné čiarky
Za poslednou položkou nie je povolená čiarka.
{ "a": 1, "b": 2, }
{ "a": 1, "b": 2 }
Oprava: Odstraňuje všetky záverečné čiarky.
Nesúlad alebo Nezatvorené Zátvorky
Všetky zátvorky a zložené zátvorky musia byť správne uzavreté.
[1, 2, 3
[1, 2, 3]
Oprava: Pridanie chýbajúcich zatváracích zátvoriek alebo zložených zátvoriek.
Chýbajúce alebo nadbytočné čiarky
Položky v poli a objektoch musia byť oddelené jedinou čiarkou.
{ "a": 1 "b": 2 }
{ "a": 1, "b": 2 }
Oprava: Vkladá chýbajúce čiarky alebo odstraňuje duplicitné.
Prítomné komentárové riadky
Štandardný JSON neumožňuje komentáre (ako napríklad // alebo /* ... */).
{ "id": 1, // ID používateľa "active": true }
{ "id": 1, "aktivne": true }
Oprava: Odstráni komentárové riadky z vstupu.
Neplatné formáty čísel
Platné sú iba obyčajné desatinné čísla (žiadne NaN, nekonečno ani hexadecimálne).
{ "val": NaN }
{ "val": null }
Oprava: Neplatné čísla sa nahradia hodnotou null.
Nepovolené riadiace znaky
Znaky, ako napríklad nové riadky v reťazcoch, musia byť správne uniknuté.
{ "msg": "Riadok1 Riadok2" }
{ "msg": "Riadok1\nRiadok2" }
Oprava: Správne unikajú riadiace znaky.
Duplikované kľúče v objekte
Duplicitné kľúče v rovnakom objekte spôsobujú nejasnosti.
{ "name": "A", "name": "B" }
{ "name": "B" }
Oprava: Zachováva iba poslednú hodnotu pre každý duplicitný kľúč.
Nesprávne formátované polia
Polia musia mať zátvorky a čiarky medzi položkami.
[ 1 2 3 ]
[ 1, 2, 3 ]
Oprava: Pridanie chýbajúcich čiark medzi prvkami poľa.
Prázdny vstup alebo iba medzery
JSON nesmie byť prázdny.
null
Oprava: Pre prázdny vstup vráti hodnotu null.
Príklad: Od poškodeného JSON k platnej oprave
{ užívateľ: 'alice', id: 42, role: [admin, 'editor',] // nadbytočná čiarka aktívny: true }Opravený JSON výstup
{ "user": "alice", "id": 42, "roles": [ "administrátor", "editor" ], "active": true }
Ako používať tento nástroj na opravu JSON
- Vložte alebo zadajte svoj neplatný JSON do editora nižšie.
- Kliknite na „Opraviť“ pre automatickú detekciu a opravu bežných syntaktických chýb.
- Skontrolujte opravený výstup a skopírujte svoj opravený JSON.
Vždy pred použitím opravenej JSON skontrolujte—pre zložité alebo silne poškodené vstupy môžu byť potrebné manuálne úpravy.
Príklady kódu na opravu JSON
Pozrite si, ako opraviť JSON v rôznych programovacích jazykoch.
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)