Инструмент восстановления JSON
Автоматически исправляйте и восстанавливайте повреждённый или некорректный JSON — безопасно, быстро и бесплатно.
Этот инструмент исправляет повреждённый или некорректный JSON с помощью автоматического исправления ошибок. Он устраняет наиболее распространённые синтаксические проблемы, встречающиеся в экспортированных данных, логах или вручную отредактированных файлах — такие как отсутствующие кавычки, лишние запятые или несоответствующие скобки — и выдаёт правильный, парсируемый JSON на выходе.
Отремонтируйте ваш JSON ниже
Как работает восстановление JSON
Инструмент проверяет ваш ввод на типичные ошибки синтаксиса JSON и применяет целенаправленные исправления, обеспечивая создание корректного JSON, когда это возможно.
- Анализирует ввод и обнаруживает распространённые синтаксические ошибки, включая недопустимые символы, неправильное расположение скобок и некорректные кавычки в строках.
- Применяет исправления для частых ошибок — например, добавление отсутствующих кавычек, удаление лишних запятых в конце или корректировка скобок.
- Выводит исправленный JSON. В большинстве случаев результат готов к немедленному парсингу или использованию.
- Если структуру нельзя исправить автоматически, отображается чёткое сообщение об ошибке, чтобы вы могли скорректировать ввод.
Распространённые ошибки JSON и способы их устранения
Вот типичные ошибки в JSON, которые этот инструмент может исправить, с примерами для каждого случая:
Ключи без кавычек
Ключи должны быть в двойных кавычках.
{ name: "Боб" }
{ "name": "Боб" }
Исправление: Добавлены двойные кавычки вокруг любых необрамленных кавычками ключей объектов.
Используются одинарные кавычки
JSON принимает только двойные кавычки для строк.
{ 'роль': 'админ' }
{ "роль": "администратор" }
Исправление: Заменяет одинарные кавычки на двойные во всех строках.
Завершающие запятые
После последнего элемента запятая не допускается.
{ "a": 1, "b": 2, }
{ "a": 1, "b": 2 }
Исправлено: удалены все завершающие запятые.
Несовпадающие или незакрытые скобки
Все скобки и фигурные скобки должны быть корректно закрыты.
[1, 2, 3
[1, 2, 3]
Исправлено: добавлены отсутствующие закрывающие скобки или фигурные скобки.
Отсутствующие или лишние запятые
Элементы массива и объекта должны быть разделены одним запятой.
{ "a": 1 "b": 2 }
{ "a": 1, "b": 2 }
Исправление: Вставляет отсутствующие запятые или удаляет дублирующиеся.
Комментарии в строках присутствуют
Стандартный JSON не допускает комментарии (например, // или /* ... */).
{ "id": 1, // идентификатор пользователя "active": true }
{ "id": 1, "active": true }
Исправление: удаляет строки с комментариями из входных данных.
Неверные Форматы Номеров
Допускаются только обычные десятичные числа (без NaN, бесконечности или шестнадцатеричных значений).
{ "val": NaN }
{ "val": null }
Исправление: заменяет недопустимые числа на null.
Неэкранированные управляющие символы
Символы, такие как переносы строк в строках, должны быть экранированы.
{ "msg": "Строка1 Строка2" }
{ "msg": "Строка1\nСтрока2" }
Исправлено: корректная обработка управляющих символов.
Дублирующиеся ключи в объекте
Повторяющиеся ключи в одном объекте вызывают неоднозначность.
{ "name": "А", "name": "Б" }
{ "name": "Б" }
Исправлено: сохраняется только последнее значение для каждого повторяющегося ключа.
Некорректные массивы
Массивы должны содержать скобки и запятые между элементами.
[ 1 2 3 ]
[ 1, 2, 3 ]
Исправление: добавлены отсутствующие запятые между элементами массива.
Пустой ввод или только пробелы
JSON не может быть пустым.
null
Исправлено: возвращает null при пустом вводе.
Пример: от повреждённого JSON к правильному восстановлению
{ user: 'alice', id: 42, roles: [администратор, 'редактор',] // лишняя запятая active: true }Исправленный вывод JSON
{ "user": "алиса", "id": 42, "roles": [ "администратор", "редактор" ], "active": true }
Как пользоваться этим инструментом для восстановления JSON
- Вставьте или введите ваш сломанный JSON в редактор ниже.
- Нажмите «Исправить», чтобы автоматически обнаружить и устранить распространённые синтаксические ошибки.
- Проверьте исправленный результат и скопируйте ваш обновлённый JSON.
Всегда проверяйте исправленный JSON перед использованием для важных данных — для сложных или сильно поврежденных данных могут понадобиться ручные корректировки.
Примеры кода для восстановления JSON
Узнайте, как исправлять JSON на различных языках программирования.
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)