Alat za popravak JSON-a

Automatski ispravite i oporavite oštećeni ili nepravilno oblikovani JSON—sigurno, brzo i besplatno.

Ovaj alat popravlja oštećeni ili nevažeći JSON pomoću automatske korekcije pogrešaka. Usmjeren je na najčešće sintaksne probleme u izvezenim podacima, zapisima ili ručno uređivanim datotekama — poput nedostajućih navodnika, suvišnih zareza ili neusklađenih zagrada — i kao rezultat daje valjani, parsabilni JSON.

Popravite svoj JSON dolje

Kako funkcionira popravak JSON-a

Alat provjerava vaš unos na uobičajene sintaksne probleme JSON-a i primjenjuje ciljane popravke, čime po mogućnosti proizvodi valjani JSON.

  1. Analizira unos i pronalazi česte sintaktičke pogreške, uključujući nelegalne znakove, nepravilno postavljene zagrade i pogrešne navodnike u nizovima.
  2. Primjenjuje ispravke za česte pogreške—kao što su dodavanje nedostajućih navodnika, uklanjanje suvišnih zareza na kraju ili ispravljanje zagrada.
  3. Ispisuje popravljeni JSON. U većini slučajeva, rezultat je spreman za analizu ili trenutnu uporabu.
  4. Ako struktura ne može biti automatski popravljena, prikazuje se jasan opis pogreške kako biste mogli prilagoditi svoj unos.

Česte JSON pogreške i kako ih ispraviti

Ovo su uobičajene pogreške u JSON-u koje ovaj alat može popraviti, s primjerima za svaku:

Nekotirani ključevi

Ključevi moraju biti u dvostrukim navodnicima.

Before:
{ name: "Bob" }
After:
{ "name": "Bob" }

Ispravak: Dodaje navodnike oko svih neoznaka ključeva objekta.

Korištenje jednostrukih navodnika

JSON prihvaća samo dvostruke navodnike za nizove.

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

Ispravak: Zamjenjuje jednostruke navodnike dvostrukim navodnicima za sve nizove.

Zarezi na kraju

Nakon posljednje stavke nije dozvoljena zarez.

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

Popravi: Uklanja sve završne zareze.

Neusklađene ili Nezatvorene Zagrade

Sve zagrade i vitičaste zagrade moraju biti ispravno zatvorene.

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

Popravak: Dodaje nedostajuće zatvarajuće zagrade ili vitičaste zagrade.

Nedostajući ili Višak Zareza

Stavke niza i objekta moraju biti razdvojene jednim zarezom.

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

Popravi: Umeće nedostajuće zareze ili uklanja duplicirane.

Prisutni komentari u linijama

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

Before:
{ "id": 1, // ID korisnika
 "active": true }
After:
{ "id": 1, "aktivno": true }

Ispravka: Uklanja komentarske retke iz unosa.

Neispravni formati brojeva

Dozvoljeni su samo obični decimalni brojevi (nije dozvoljeno NaN, Infinity ili heksadecimalni zapisi).

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

Popravi: Zamjenjuje nevažeće brojeve s null vrijednošću.

Nekontrolirani znakovi upravljanja

Znakovi poput novih redova u nizovima moraju biti ispravno označeni.

Before:
{ "msg": "Linija1
Linija2" }
After:
{ "msg": "Redak1\nRedak2" }

Ispravljeno: Ispravno rukovanje kontrolnim znakovima u Escape sekvencama.

Duplicirane ključeve u objektu

Duplikatni ključevi u istom objektu uzrokuju dvosmislenost.

Before:
{ "name": "A", "name": "B" }
After:
{ "name": "B" }

Ispravak: Zadržava samo zadanu vrijednost za svaki duplicirani ključ.

Neispravni nizovi

Nizovi moraju imati zagrade i zareze između stavki.

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

Popravak: Dodane nedostajuće zareze između elemenata niza.

Prazan unos ili samo razmaci

JSON ne može biti prazan.

Before:
After:
null

Popravak: Vraća null za prazni unos.

Primjer: Od ispravljanja oštećenog JSON-a do valjanog popravka

Neispravan JSON unos
{ user: 'alice', id: 42, uloge: [administrator, 'urednik',] // dodatna zarez
 aktivan: istina }
Popravljen JSON izlaz
{
  "user": "alice",
  "id": 42,
  "roles": [
    "administrator",
    "urednik"
  ],
  "active": true
}

Kako koristiti ovaj alat za popravak JSON-a

  1. Zalijepite ili unesite svoj oštećeni JSON u uređivač ispod.
  2. Kliknite 'Popravi' za automatsko otkrivanje i ispravljanje uobičajenih sintaksnih pogrešaka.
  3. Pregledajte popravljeni rezultat i kopirajte svoju ispravljenu JSON datoteku.

Uvijek provjerite ispravljeni JSON prije upotrebe za kritične podatke — ručna prilagodba može biti potrebna za složene ili jako oštećene ulaze.

Primjeri koda za popravak 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)