Інструмент для виправлення JSON

Автоматично виправляйте та відновлюйте пошкоджений або некоректний JSON — безпечно, швидко та безкоштовно.

Цей інструмент виправляє пошкоджений або некоректний JSON за допомогою автоматичного виправлення помилок. Він усуває найпоширеніші синтаксичні проблеми, які виникають у експортованих даних, логах або файлах, відредагованих вручну — такі як відсутні лапки, зайві коми або непарні дужки — і генерує валідний, парсований JSON на виході.

Відремонтуйте свій JSON нижче

Як працює відновлення JSON

Інструмент аналізує ваш вхідний текст на типові помилки синтаксису JSON і застосовує цільові виправлення, створюючи дійсний JSON, коли це можливо.

  1. Аналізує введені дані та виявляє поширені синтаксичні помилки, включно з забороненими символами, неправильно розміщеними дужками та некоректними лапками у рядках.
  2. Виправляє поширені помилки — додавання відсутніх лапок, видалення зайвих ком, виправлення дужок та інше.
  3. Повертає відновлений JSON. У більшості випадків результат готовий до парсингу або негайного використання.
  4. Якщо структуру не вдається відновити автоматично, відображається чітка помилка, щоб ви могли відкоригувати свої дані.

Поширені помилки JSON та способи їх виправлення

Ось типові помилки у JSON, які цей інструмент може виправити, з прикладами для кожної:

Ключі без лапок

Ключі повинні бути в подвійних лапках.

Before:
{ name: "Боб" }
After:
{ "name": "Боб" }

Виправлення: Додає подвійні лапки навколо необрамлених ключів об’єктів.

Використано одинарні лапки

JSON приймає лише подвійні лапки для рядків.

Before:
{ 'role': 'адмін' }
After:
{ "role": "адмін" }

Виправлення: заміна одинарних лапок на подвійні у всіх рядках.

Закінчувальні коми

Після останнього елемента кома не допускається.

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

Виправлення: Видаляє будь-які зайві коми в кінці.

Неспряжені або незакриті дужки

Всі дужки та фігурні дужки повинні бути правильно закриті.

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

Виправлення: Додає відсутні закриваючі дужки або фігурні дужки.

Відсутні або зайві коми

Елементи масиву та об’єкта мають бути розділені одним комою.

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

Виправлення: додає пропущені коми або видаляє дублікати.

Наявні коментарі в рядках

Стандартний JSON не дозволяє коментарі (наприклад, // або /* ... */).

Before:
{ "id": 1, // ID користувача
 "active": true }
After:
{ "id": 1, "active": true }

Виправлення: Видаляє рядки з коментарями з введених даних.

Неправильні формати номерів

Дійсними є лише звичайні десяткові числа (без NaN, нескінченності чи шістнадцяткових чисел).

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

Виправлення: Заміна некоректних чисел на null.

Некеровані керуючі символи

Символи, як-от перенос рядка у рядках, повинні бути екрановані.

Before:
{ "msg": "Рядок1
Рядок2" }
After:
{ "msg": "Рядок1\nРядок2" }

Виправлено: правильне екранування керуючих символів.

Дублікати ключів в об'єкті

Подвійні ключі в одному об'єкті спричиняють неоднозначність.

Before:
{ "name": "А", "name": "Б" }
After:
{ "name": "Б" }

Виправлення: Залишає лише останнє значення для будь-якого дубльованого ключа.

Неправильні масиви

Масиви повинні містити дужки та кому між елементами.

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

Виправлення: Додає пропущені коми між елементами масиву.

Порожній ввід або тільки пропуски

JSON не може бути порожнім.

Before:
After:
null

Виправлення: Повертає null для порожнього вводу.

Приклад: Від пошкодженого JSON до правильної відновленої версії

Некоректний формат JSON
{ user: 'alice', id: 42, roles: [адмін, 'редактор',] // зайва кома
 active: true }
Відновлений вивід JSON
{
  "user": "еліс",
  "id": 42,
  "roles": [
    "адміністратор",
    "редактор"
  ],
  "active": true
}

Як користуватися цим інструментом для відновлення JSON

  1. Вставте або введіть ваш некоректний JSON у редактор нижче.
  2. Натисніть «Відновити», щоб автоматично виявити та виправити поширені синтаксичні помилки.
  3. Перегляньте виправлений результат і скопіюйте ваш виправлений JSON.

Завжди перевіряйте відновлений JSON перед використанням для критичних даних — складні або сильно пошкоджені файли можуть вимагати ручного редагування.

Приклади коду для відновлення JSON

Дізнайтеся, як виправити JSON у різних мовах програмування.

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)