เครื่องมือซ่อมแซม 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, // รหัสผู้ใช้
 "active": true }
After:
{ "id": 1, "active": true }

แก้ไข: ลบบรรทัดความคิดเห็นออกจากข้อมูลนำเข้า

รูปแบบหมายเลขไม่ถูกต้อง

รับเฉพาะตัวเลขทศนิยมที่เป็นตัวเลขจริงเท่านั้น (ไม่มี NaN, Infinity หรือเลขฐานสิบหก)

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 สำหรับข้อมูลนำเข้าที่ว่างเปล่า

ตัวอย่าง: จาก JSON ที่เสียหายสู่การซ่อมแซมที่ถูกต้อง

ข้อมูล JSON ไม่ถูกต้อง
{ user: 'alice', id: 42, roles: [admin, 'editor',] // คอมม่าเกิน
 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)