أداة إصلاح 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:
{ "أ": 1 "ب": 2 }
After:
{ "a": 1, "b": 2 }

إصلاح: يُدرج الفواصل الناقصة أو يزيل التكرارات.

خطوط التعليقات موجودة

لا يسمح تنسيق JSON القياسي بإضافة تعليقات (مثل // أو /* ... */).

Before:
{ "id": 1, // معرف المستخدم
 "active": true }
After:
{ "id": 1, "active": true }

الإصلاح: إزالة أسطر التعليقات من المدخلات.

صيغ أرقام غير صالحة

الأرقام العشرية العادية فقط هي الصالحة (بدون قيم غير رقمية، لا نهاية، أو أعداد سداسية عشرية).

Before:
{ "val": غير_رقم}
After:
{ "val": null }

تصحيح: استبدال الأرقام غير الصالحة بالقيمة فارغة (null).

أحرف التحكم غير المهربة

يجب الهروب من الأحرف مثل الفواصل الجديدة في السلاسل النصية.

Before:
{ "msg": "السطر 1
السطر 2" }
After:
{ "msg": "السطر 1\nالسطر 2" }

إصلاح: معالجة أحرف التحكم بشكل صحيح.

مفاتيح مكررة في الكائن

المفاتيح المكررة في نفس الكائن تسبب غموضاً.

Before:
{ "name": "أ"، "name": "ب" }
After:
{ "name": "ب" }

تصحيح: يحتفظ بالقيمة الأخيرة فقط لأي مفتاح مكرر.

مصفوفات غير صحيحة التنسيق

يجب أن تحتوي المصفوفات على أقواس وفواصل بين العناصر.

Before:
[ ١ ٢ ٣ ]
After:
[ 1، 2، 3 ]

إصلاح: إضافة الفواصل المفقودة بين عناصر المصفوفة.

مدخل فارغ أو يحتوي فقط على فراغات

لا يمكن أن يكون محتوى JSON فارغًا.

Before:
After:
فارغ

الإصلاح: يُرجع قيمة فارغة عند إدخال بيانات فارغة.

مثال: من JSON تالفة إلى إصلاح صحيح

إدخال JSON غير صالح
{ user: 'أليس', id: 42, roles: [admin, 'محرر',] // فاصلة زائدة
 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)