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.

  1. Analizira unos i pronalazi uobičajene sintaksne greške, uključujući nelegalne karaktere, pogrešno postavljene zagrade i nepravilne navodnike kod stringova.
  2. Primjenjuje ispravke za česte greške—kao što su dodavanje nedostajućih navodnika, uklanjanje zarezâ na kraju, ili ispravljanje zagrada.
  3. Izlaz predstavlja ispravljeni JSON. U većini slučajeva, rezultat je spreman za trenutnu obradu ili upotrebu.
  4. 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.

Before:
{ name: "Bob" }
After:
{ "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.

Before:
{ 'uloga': 'administrator' }
After:
{ "role": "administrator" }

Popravka: Zamenjuje jednostruke navodnike dvostrukim navodnicima za sve stringove.

Poslednje zareze

Nakon poslednje stavke nije dozvoljena zarez.

Before:
{ "a": 1, "b": 2, }
After:
{ "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.

Before:
[1, 2, 3
After:
[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.

Before:
{ "a": 1 "b": 2 }
After:
{ "a": 1, "b": 2 }

Ispravi: Ubacuje nedostajuće zareze ili uklanja duplikate.

Prisustvo komentarskih linija

Standardni JSON ne dozvoljava komentare (kao što su // ili /* ... */).

Before:
{ "id": 1, // ID korisnika
 "aktivno": true }
After:
{ "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).

Before:
{ "val": NaN }
After:
{ "val": null }

Ispravka: Nevažeći brojevi zamenjeni sa null vrednošću.

Nekontrolisani kontrolni karakteri

Znakovi poput preloma linije u nizovima moraju biti escapeovani.

Before:
{ "msg": "PrvaLinija
DrugaLinija" }
After:
{ "msg": "Linija1\nLinija2" }

Ispravljeno: Ispravno izbegavanje kontrolnih karaktera.

Duplirani ključevi u objektu

Duplikatni ključevi u istom objektu izazivaju dvosmislenost.

Before:
{ "name": "A", "name": "B" }
After:
{ "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.

Before:
[ 1 2 3 ]
After:
[ 1, 2, 3 ]

Ispravka: Dodavanje nedostajućih zareza između elemenata niza.

Prazan unos ili samo razmaci

JSON ne sme biti prazan.

Before:
After:
nul

Ispravka: Vraća null za prazan unos.

Primer: Od Pokvarenog JSON-a do Ispravnog Popravka

Neispravan JSON unos
{ 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

  1. Nalepite ili otkucajte svoj neispravan JSON u uređivač ispod.
  2. Kliknite na 'Popravi' da automatski otkrijete i ispravite česte sintaksne greške.
  3. 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.

JavaScript (Node.js) with jsonrepair
Install: npm install jsonrepair
const { jsonrepair } = require('jsonrepair');
const broken = '{ name: "Bob", age: 42, }';
const fixed = jsonrepair(broken);
console.log(fixed); // Now valid JSON!
JavaScript (Node.js) simple fix (not for production)
Install: Standard library
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);
}
Python with dirtyjson
Install: pip install dirtyjson
import dirtyjson
broken = "{ name: 'Bob', age: 42 }"
obj = dirtyjson.loads(broken)
print(obj)
Python with demjson3
Install: pip install demjson3
import demjson3
broken = "{ name: 'Bob', age: 42 }"
obj = demjson3.decode(broken)
print(obj)
Go (using otto for JS-like object parsing)
Install: go get github.com/robertkrimen/otto
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)
  }
}
Java with org.json (manual fix for single quotes)
Install: org.json:json
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);
  }
}
C# with Newtonsoft.Json (try-catch, manual fix)
Install: Newtonsoft.Json
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 (manual fix for single quotes/unquoted keys)
Install: Standard library
<?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);
Ruby with json-repair (via gem or shell call)
Install: gem install json-repair or use npx jsonrepair
# Using system call to npx jsonrepair
require 'open3'
broken = "{ name: 'Bob', age: 42 }"
fixed, _ = Open3.capture2("echo #{broken.inspect} | npx jsonrepair")
puts fixed
Bash (npx jsonrepair CLI)
Install: npm install -g jsonrepair
echo "{ name: 'Bob', age: 42 }" | npx jsonrepair
Rust (suggest manual pre-processing)
Install: Standard libraries
// Rust does not have a json repair crate yet. Pre-process string with regex to fix simple cases, then use serde_json.
Kotlin (manual fix, like Java)
Install: org.json: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)
}
TypeScript (Node.js) with jsonrepair
Install: npm install jsonrepair
import { jsonrepair } from 'jsonrepair';
const broken = '{ name: "Bob", age: 42 }';
const fixed = jsonrepair(broken);
console.log(fixed);
Dart (manual string fixes)
Install: Standard library
var broken = "{ name: 'Bob', age: 42 }";
var fixed = broken.replaceAll("'", '"').replaceAllMapped(
  RegExp(r'([a-zA-Z0-9_]+):'),
  (m) => '"${m[ 1 ]}":',
);
print(fixed);
Elixir (manual fix with Regex)
Install: Standard library
broken = "{ name: 'Bob', age: 42 }"
fixed = Regex.replace(~r/'/, broken, """)
fixed = Regex.replace(~r/(\w+):/, fixed, ""\\1":")
IO.puts(fixed)