JSON修复工具

自动修复并恢复损坏或格式错误的 JSON——安全、快速且免费。

该工具通过自动纠错修复损坏或无效的JSON,专注于解决导出数据、日志或手工编辑文件中最常见的语法问题,例如缺失引号、多余逗号或括号不匹配,生成有效且易解析的JSON格式输出。

修复下面的JSON

JSON修复原理

该工具会扫描您的输入以检测常见的 JSON 语法问题,并进行针对性修复,尽可能生成有效的 JSON。

  1. 解析输入内容,定位常见语法错误,包括非法字符、括号位置错误和字符串引号使用不当。
  2. 修复常见错误,例如添加缺失的引号、删除结尾逗号或纠正括号,提升代码质量与稳定性。
  3. 输出修复后的 JSON。在大多数情况下,结果可以立即解析或使用。
  4. 如果结构无法自动修复,系统会显示明确的错误信息,方便您调整输入内容。

常见JSON错误及其修复方法

以下是该工具可以修复的常见 JSON 错误示例,每个错误均附有示例:

未加引号的键

键必须用双引号括起来。

Before:
{ 名字: "鲍勃" }
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、Infinity或十六进制)。

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

修复:将无效数字替换为null。

未转义的控制字符

字符串中的字符,如换行符,必须进行转义。

Before:
{ "msg": "第一行\n第二行" }
After:
{ "msg": "第一行\n第二行" }

修复:正确转义控制字符。

对象中的重复键

同一对象中的重复键会导致歧义。

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

修复:对任何重复键仅保留最后一个值。

格式错误的数组

数组必须使用方括号,并且项之间用逗号分隔。

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

修复:在数组元素之间添加缺失的逗号。

输入为空或仅含空白字符

JSON不能为空。

Before:
After:

修复:输入为空时返回空值。

示例:从损坏的JSON到有效修复

格式错误的JSON输入
{ 用户: 'alice', 识别码: 42, 角色: [管理员, '编辑者',] // 多余的逗号
 活跃: 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)