כלי לתיקון JSON
תקן ושחזר אוטומטית קבצי JSON שבורים או שפגומים — בצורה בטוחה, מהירה וללא עלות.
כלי זה מתקן JSON שבור או לא תקין באמצעות תיקון שגיאות אוטומטי. הוא מתמקד בבעיות התחביר הנפוצות ביותר שנמצאות בנתונים מיוצאים, יומני רישום או קבצים שנערכו ידנית—כגון גרשיים חסרים, פסיקים מיותרים או סוגריים לא תואמים—ומפיק JSON תקין שניתן לפרש כקלט.
תקן את קובץ ה-JSON שלך למטה
איך תיקון JSON עובד
הכלי סורק את הקלט שלך לאיתור בעיות סינטקס טיפוסיות של JSON ומבצע תיקונים ממוקדים, כדי ליצור JSON תקין במידת האפשר.
- מפרש את הקלט ומאתר שגיאות תחביר נפוצות, כולל תווים לא חוקיים, סוגריים מונחים לא נכון וציטוטים שגויים במחרוזות.
- מיישם תיקונים לשגיאות נפוצות—כמו הוספת גרשיים חסרים, הסרת פסיקים מיותרים בסוף, או תיקון סוגריים.
- מייצא את קובץ ה-JSON המתוקן. ברוב המקרים, התוצאה מוכנה לעיבוד או לשימוש מיידי.
- אם המבנה אינו ניתן לתיקון באופן אוטומטי, תוצג שגיאה ברורה כדי שתוכל להתאים את הקלט שלך.
שגיאות JSON נפוצות ואיך לתקן אותן
להלן שגיאות JSON טיפוסיות שכלי זה יכול לתקן, עם דוגמאות לכל אחת:
מפתחות ללא גרשיים
המפתחות חייבים להיות במרכאות כפולות.
{ name: "בוב" }
{ "name": "בוב" }
תיקון: מוסיף גרשיים כפולים סביב מפתחות אובייקט שלא היו במרכאות.
נעשה שימוש במרכאות בודדות
JSON מקבל רק גרשיים כפולים למחרוזות.
{ 'role': 'מנהל' }
{ "role": "מנהל" }
תיקון: מחליף גרישים בודדים בגרשיים כפולים בכל המחרוזות.
פסיקים בסוף רשימה
לא מותר פסיק אחרי הפריט האחרון.
{ "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": "A", "name": "B" }
{ "name": "ב" }
תיקון: שומר רק על הערך האחרון לכל מפתח כפול.
מערכים מפורענים
מערכים חייבים לכלול סוגריים מרובעים ופסיקים בין הפריטים.
[ 1 2 3 ]
[ 1, 2, 3 ]
תקן: הוספת פסיקים חסרים בין אלמנטים במערך.
קלט ריק או רווחים בלבד
ה-JSON לא יכול להיות ריק.
אפס
תיקון: מחזיר null עבור קלט ריק.
דוגמה: מ-JSON שבור לתיקון תקין
{ user: 'אליס', 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)