JSON taisymo įrankis
Automatiškai taisykite ir atkurkite sugadintą arba klaidingai suformatuotą JSON – saugiai, greitai ir nemokamai.
Šis įrankis pataiso sugadintą ar neteisingą JSON, naudodamas automatizuotą klaidų taisymą. Jis pašalina dažniausias sintaksės problemas, dažnai pasitaikančias eksportuotuose duomenyse, žurnaluose ar rankiniu būdu redaguotuose failuose – tokias kaip trūkstamos kabutės, klaidingi kableliai ar neatitinkantys skliaustai – ir pateikia galiojantį, analizuojamą JSON failą.
Sutvarkykite jūsų JSON žemiau
Kaip veikia JSON taisymas
Įrankis patikrina jūsų įvestį dėl dažniausių JSON sintaksės klaidų ir taiko tikslingus taisymus, kiek įmanoma sugeneruodamas galiojančią JSON struktūrą.
- Analizuoja įvestį ir aptinka dažnas sintaksės klaidas, įskaitant neleistinas raides, neteisingai išdėstytas skliaustelius bei klaidingai užrašytas eilutės kabutes.
- Taiko pataisas dažnoms klaidoms – pavyzdžiui, prideda trūkstamas kabutes, pašalina nereikalingas kablelius arba taiso skliaustus.
- Išveda pataisytą JSON. Daugeliu atvejų rezultatas yra paruoštas iškart analizuoti arba naudoti.
- Jei struktūros automatiškai ištaisyti nepavyksta, rodoma aiški klaida, kad galėtumėte pakoreguoti savo įvestį.
Dažnos JSON Klaidos ir Kaip Jas Ištaisyti
Čia pateikti dažniausiai pasitaikantys JSON klaidų pavyzdžiai, kuriuos ši priemonė gali ištaisyti:
Nekituotos raktinės eilutės
Raktiniai žodžiai turi būti dvigubose kabutėse.
{ name: "Bobas" }
{ "name": "Bobas" }
Pataisyti: Prideda kabutes aplink bet kuriuos nenurodytus objekto raktus.
Naudojamos viengubos kabutės
JSON priima tik dvigubas kabutes eilutėms.
{ 'pareigos': 'administratorius' }
{ "role": "administratorius" }
Ištaisymas: Pakeičia viengubas kabutes dvigubomis visiems tekstiniams kintamiesiems.
Pabaigos kableliai
Po paskutinio elemento kablelis nėra leidžiamas.
{ "a": 1, "b": 2, }
{ "a": 1, "b": 2 }
Pataisyta: Pašalina bet kokias pabaigoje esančias kableles.
Nesuderintos arba neatidarytos skliaustelės
Visos skliaustelės ir kabliataškiai turi būti tinkamai uždaryti.
[1, 2, 3
[1, 2, 3]
Pataisymai: Pridėti trūkstami uždarantys skliaustai arba kabliai.
Trūkstamos arba perteklinės kableliai
Masyvų ir objektų elementai turi būti atskirti vienu kableliu.
{ "a": 1 "b": 2 }
{ "a": 1, "b": 2 }
Taisyti: įterpia trūkstamas kablelius arba pašalina pasikartojimus.
Komentarų eilutės yra
Standartinis JSON formatas neleidžia komentarų (pvz., // arba /* ... */).
{ "id": 1, // vartotojo ID "active": true }
{ "id": 1, "aktyvus": true }
Taisyti: Pašalina komentarų eilutes iš įvesties.
Neteisingi skaičiaus formatai
Galioja tik paprasti dešimtainiai skaičiai (be NaN, begalybės ar šešioliktainių skaičių).
{ "val": Ne skaičius }
{ "val": null }
Pataisymas: neteisingus skaičius pakeičia į null.
Nepageidaujami valdymo simboliai
Eilutėse, pavyzdžiui, naujos eilutės simboliai, turi būti pažymėti pabėgimo simboliu.
{ "msg": "Eilutė1 Eilutė2" }
{ "msg": "Eilutė1\nEilutė2" }
Pataisyta: Valdymo simboliai teisingai pereinami.
Pasikartojantys raktai objekte
Dublikatai raktų tame pačiame objekte sukelia neaiškumų.
{ "name": "A", "name": "B" }
{ "name": "B" }
Pataisyta: palieka tik paskutinę pasikartojančio rakto reikšmę.
Netinkamai suformuotos masyvų struktūros
Masyvai turi turėti skliaustus ir kablelius tarp elementų.
[ 1 2 3 ]
[ 1, 2, 3 ]
Pataisyta: pridėti trūkstami kableliai tarp masyvo elementų.
Tuščia įvestis arba tik tarpai
JSON negali būti tuščias.
null
Taisymas: Grazina null, kai ivestis tuscia.
Pavyzdys: Nuo sugadinto JSON iki teisingo taisymo
{ user: 'alice', id: 42, roles: [admin, 'redaktorius',] // papildoma kablelis aktyvus: true }Sutvarkytas JSON išvestis
{ "user": "alicija", "id": 42, "roles": [ "administratorius", "redaktorius" ], "active": true }
Kaip naudotis šiuo JSON taisymo įrankiu
- Įklijuokite arba įveskite savo neteisingą JSON kodą į žemiau esantį redaktorių.
- Spustelėkite „Taisyti“, kad automatiškai aptiktumėte ir ištaisytumėte dažnas sintaksės klaidas.
- Peržiūrėkite pataisytą rezultatą ir nukopijuokite savo ištaisytą JSON.
Visada patikrinkite taisytą JSON prieš naudodami jį kritiniams duomenims – sudėtingiems ar stipriai pažeistiems įrašams gali prireikti rankinių pataisymų.
Kodo Pavyzdžiai JSON Taisyti
Sužinokite, kaip taisyti JSON įvairiomis programavimo kalbomis.
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)