JSON:n korjaustyökalu
Korjaa ja palauta automaattisesti rikkinäinen tai väärinmuodostunut JSON – turvallisesti, nopeasti ja ilmaiseksi.
Tämä työkalu korjaa rikki tai virheelliset JSON-tiedostot automaattisen virheenkorjauksen avulla. Se kohdistuu yleisimpiin syntaksivirheisiin, joita esiintyy esimerkiksi viedyissä tiedoissa, lokitiedostoissa tai käsin muokatuissa tiedostoissa – kuten puuttuvat lainausmerkit, ylimääräiset pilkut tai epäsopivat sulkeet – ja tuottaa kelvollista, jäsennettävää JSON-muotoa ulostulona.
Korjaa JSONisi alla
Kuinka JSON-korjaus toimii
Työkalu tarkistaa syötteesi tyypilliset JSON-syntaksivirheet ja korjaa ne tarkasti, tuottaen mahdollisuuksien mukaan kelvollista JSON-dataa.
- Jäsentää syötteen ja paikantaa yleisimmät syntaksivirheet, kuten virheelliset merkit, väärin sijoitetut sulkeet ja virheelliset merkkijonon lainausmerkit.
- Korjaa yleisimpiä virheitä, kuten puuttuvien lainausmerkkien lisääminen, ylimääräisten pilkkujen poistaminen ja sulkujen korjaaminen.
- Tuottaa korjatun JSON-tiedoston. Useimmissa tapauksissa tulos on heti valmis jäsentää tai käyttää.
- Jos rakennetta ei voi korjata automaattisesti, näytetään selkeä virheilmoitus, jotta voit muokata syötettäsi.
Yleiset JSON-virheet ja kuinka korjata ne
Tässä on tyypillisiä JSON-virheitä, joita tämä työkalu voi korjata, esimerkkien kera:
Lainausmerkeittä avaimet
Avainsanojen tulee olla lainausmerkeissä.
{ name: "Bob" }
{ "name": "Bob" }
Korjaa: Lisää lainausmerkit ympärille kaikille lainausmerkeiltä puuttuville objektiavaimille.
Yksittäiset lainausmerkit käytössä
JSON hyväksyy merkkijonoissa vain kaksinkertaiset lainausmerkit.
{ 'rooli': 'ylläpitäjä' }
{ "rooli": "ylläpitäjä" }
Korjaa: Korvaa yksittäiset lainausmerkit kaksoislainausmerkeillä kaikissa merkkijonoissa.
Peräkkäiset pilkut
Viimeisen kohteen jälkeen ei saa käyttää pilkkua.
{ "a": 1, "b": 2, }
{ "a": 1, "b": 2 }
Korjaa: Poistaa kaikki loppuun jääneet pilkut.
Erimittaiset tai sulkemattomat hakasulkeet
Kaikkien sulkujen ja aaltosulkujen on sulkeuduttava oikein.
[1, 2, 3
[1, 2, 3]
Korjaa: Lisää puuttuvat sulkevat hakasulkeet tai aaltosulkeet.
Puuttuvat tai ylimääräiset pilkut
Taulukon ja objektin kohteet on erotettava toisistaan yhdellä pilkulla.
{ "a": 1 "b": 2 }
{ "a": 1, "b": 2 }
Korjaa: Lisää puuttuvat pilkut tai poistaa kaksoiskappaleet.
Kommenttirivejä läsnä
Standardi JSON ei salli kommentteja (kuten // tai /* ... */).
{ "id": 1, // käyttäjän tunnus "active": true }
{ "id": 1, "aktiivinen": true }
Korjaa: Poistaa kommenttirivit syötteestä.
Virheelliset numeromuodot
Kelvollisia ovat vain tavalliset desimaaliluvut (ei NaN, ääretöntä tai heksadesimaalilukuja).
{ "val": NaN }
{ "val": null }
Korjaa: Korvaa virheelliset numerot arvolla null.
Ei-escapoidut kontrollimerkit
Merkkijonoissa olevat merkit, kuten rivinvaihdot, on pakko merkitä pako-merkeillä.
{ "msg": "Rivi1 Rivi2" }
{ "msg": "Rivi1\nRivi2" }
Korjattu: Hallintamerkit käsitellään oikein pelkistämällä.
Kaksoisavaimet objektissa
Saman objektin kaksoisavaimet aiheuttavat epäselvyyttä.
{ "name": "A", "name": "B" }
{ "name": "B" }
Korjaa: Säilyttää vain viimeisen arvon, jos avain esiintyy useasti.
Virheellisesti muotoillut taulukot
Taulukoissa tulee olla hakasulut ja pilkut kohteiden välillä.
[ 1 2 3 ]
[ 1, 2, 3 ]
Korjaa: Lisää puuttuvat pilkut taulukon alkioiden väliin.
Tyhjä syöte tai pelkkää välilyöntiä
JSON ei voi olla tyhjä.
null
Korjaa: Palauttaa null-arvon tyhjälle syötteelle.
Esimerkki: Rikkinäisestä JSON-tiedostosta toimivaan korjaukseen
{ käyttäjä: 'alice', id: 42, roolit: [ylläpitäjä, 'toimittaja',] // ylimääräinen pilkku aktiivinen: tosi }Korjattu JSON-lähtö
{ "user": "alice", "id": 42, "roles": [ "järjestelmänvalvoja", "muokkaaja" ], "active": true }
Kuinka käyttää tätä JSON-korjaustyökalua
- Liitä tai kirjoita rikkinäinen JSON-tiedostosi alla olevaan editoriin.
- Napsauta 'Korjaa', niin tunnistamme ja korjaamme automaattisesti yleiset syntaksivirheet.
- Tarkista korjattu sisältö ja kopioi korjattu JSON-tiedostosi.
Tarkista aina korjattu JSON ennen sen käyttämistä kriittisiin tietoihin – monimutkaisiin tai voimakkaasti vaurioituneisiin tietoihin saattaa olla tarpeen tehdä manuaalisia säätöjä.
JSON-korjausesimerkit
Katso, miten JSON-tiedosto korjataan eri ohjelmointikielillä.
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)