Whiz Tools

منسق JSON

قم بتنسيق وتحسين JSON الخاص بك باستخدام هذه الأداة البسيطة

سيظهر JSON المنسق هنا...

JSON Formatter

مقدمة

JSON (JavaScript Object Notation) هو تنسيق خفيف لتبادل البيانات الذي أصبح معيارًا لتبادل البيانات في تطبيقات الويب. على الرغم من بساطته، يمكن أن تصبح بيانات JSON صعبة القراءة عندما تكون مضغوطة أو تفتقر إلى التنسيق المناسب. تساعد هذه الأداة في تحويل سلاسل JSON الخام وغير المنسقة إلى شكل منظم ومهيكل جيدًا يسهل قراءته وتحليله.

يضيف تنسيق JSON (المعروف أيضًا باسم "الطباعة الجميلة") المسافات البادئة المتسقة، وفواصل الأسطر، والمسافات لجعل الهيكل الهرمي لبيانات JSON واضحًا بصريًا. هذا مفيد بشكل خاص عند العمل مع كائنات متداخلة معقدة أو مجموعات بيانات كبيرة حيث قد تكون العلاقات بين العناصر صعبة الفهم بخلاف ذلك.

توفر أداتنا لتنسيق JSON واجهة بسيطة لتجميل بيانات JSON الخاصة بك مع المسافات البادئة المناسبة والبنية، مما يجعلها أكثر قابلية للقراءة للبشر مع الحفاظ على صلاحيتها للآلات.

بنية JSON والتركيب

تتكون JSON من هيكلين أساسيين:

  1. الكائنات: مجموعات من أزواج الاسم/القيمة محاطة بأقواس معقوفة {}. يتبع كل اسم نقطتين : وتفصل الأزواج بفواصل ,.
   {"name": "جون", "age": 30, "city": "نيويورك"}
   
  1. المصفوفات: قوائم مرتبة من القيم محاطة بأقواس مربعة []. تفصل القيم بفواصل ,.
   ["تفاح", "موز", "كرز"]
   

يمكن أن تكون قيم JSON:

  • سلاسل (في علامات اقتباس مزدوجة): "مرحبا بالعالم"
  • أرقام: 42 أو 3.14159
  • قيم منطقية: true أو false
  • فارغ: null
  • كائنات: {"key": "value"}
  • مصفوفات: [1, 2, 3]

يجب أن تتبع JSON الصحيحة هذه القواعد النحوية:

  • يجب أن تكون الأسماء سلاسل في علامات اقتباس مزدوجة
  • يجب أن تكون القيم واحدة من أنواع بيانات JSON الصالحة
  • لا يُسمح بالفواصل الزائدة
  • لا يُسمح بالتعليقات
  • لا يُسمح بالدوال أو الطرق

تشمل الأخطاء الشائعة في التركيب:

  • الأقواس/الأقواس المعقوفة المفقودة أو غير المتطابقة
  • الفواصل المفقودة أو الزائدة
  • عدم وجود علامات اقتباس حول أسماء الخصائص
  • استخدام علامات اقتباس مفردة بدلاً من علامات اقتباس مزدوجة
  • تضمين الفواصل الزائدة
  • استخدام القيم غير المعرفة

كيفية عمل تنسيق JSON

يحول تنسيق JSON JSON المضغوط والمصغر إلى شكل أكثر قابلية للقراءة من خلال:

  1. التحليل: يتم أولاً تحليل سلسلة JSON للتأكد من صحتها ولإنشاء تمثيل في الذاكرة لهيكل البيانات.

  2. المسافات البادئة: يتم إضافة مسافات بادئة لكل مستوى متداخل من الكائنات والمصفوفات (عادةً بمقدار 2 أو 4 مسافات) لتمثيل الهيكلية بصريًا.

  3. فواصل الأسطر: تُضاف أسطر جديدة بعد كل خاصية أو عنصر مصفوفة لتحسين قابلية القراءة.

  4. المسافات: تُضاف مسافات متسقة حول النقطتين والفواصل.

على سبيل المثال، تصبح هذه JSON المضغوطة:

{"name":"جون دو","age":30,"address":{"street":"123 Main St","city":"Anytown","state":"CA"},"hobbies":["قراءة","تسلق","تصوير"]}

هذه JSON المنسقة:

{
  "name": "جون دو",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA"
  },
  "hobbies": [
    "قراءة",
    "تسلق",
    "تصوير"
  ]
}

تستخدم أداتنا مسافة بادئة قياسية قدرها 2 مسافات لكل مستوى، وهو تقليد شائع في مجتمع التطوير ويوفر توازنًا جيدًا بين الكثافة وقابلية القراءة.

التحقق من صحة JSON

جانب حاسم من تنسيق JSON هو التحقق من الصحة. قبل أن يمكن تنسيق JSON، يجب أن يكون صحيحًا نحويًا وفقًا لمواصفات JSON. تشمل الأخطاء الشائعة في التحقق من الصحة:

  1. أخطاء التركيب:

    • أسماء الخصائص غير المقتبسة
    • الفواصل المفقودة أو الزائدة
    • الهياكل المتداخلة بشكل غير صحيح
    • سلاسل، كائنات، أو مصفوفات غير مغلقة
  2. أخطاء نوع البيانات:

    • استخدام القيم الخاصة بلغة جافا سكريبت مثل undefined أو NaN
    • تضمين الدوال أو الطرق
    • استخدام علامات اقتباس مفردة للسلاسل

عند مواجهة JSON غير صحيحة، يمكن أن تساعد رسالة الخطأ في تحديد المشكلة. ستشير معظم محللات JSON إلى الموضع الذي فشل فيه التحليل، مما يمكن أن يساعد في تحديد المشكلة. توفر أداتنا رسائل خطأ واضحة لمساعدتك في تحديد وإصلاح المشكلات في بيانات JSON الخاصة بك.

حالات الاستخدام

يعد تنسيق JSON مفيدًا في العديد من السيناريوهات:

تطوير API واختبارها

عند العمل مع واجهات برمجة التطبيقات RESTful، يجعل JSON المنسق من الأسهل:

  • فحص أحمال الاستجابة
  • تصحيح أجسام الطلبات
  • توثيق أمثلة API
  • التحقق من تطابق هياكل البيانات مع التوقعات

إدارة التكوين

تستخدم العديد من التطبيقات الحديثة JSON للتكوين:

  • ملفات إعدادات التطبيقات
  • تكوينات البيئة
  • مواصفات البناء والنشر
  • قوالب البنية ككود (مثل AWS CloudFormation، Terraform)

تحليل البيانات والتصور

يساعد تنسيق JSON عند:

  • استكشاف مجموعات البيانات
  • إعداد البيانات للتصور
  • فهم مخططات البيانات
  • تحديد الأنماط في البيانات المهيكلة

تصحيح الأخطاء وحل المشكلات

يعد تنسيق JSON المناسب ضروريًا عند:

  • تصحيح تطبيقات الويب
  • فحص localStorage أو sessionStorage
  • تحليل استجابات الشبكة
  • استكشاف مشكلات تكامل البيانات

الأغراض التعليمية

يعد تنسيق JSON الواضح مفيدًا لـ:

  • تعليم الهياكل البيانية
  • توضيح العلاقات المتداخلة
  • شرح مفاهيم API
  • توضيح مبادئ نمذجة البيانات

البدائل

بينما تعتبر أداتنا عبر الإنترنت لتنسيق JSON مريحة لمهام التنسيق السريعة، توجد العديد من البدائل لسيناريوهات مختلفة:

أدوات مطوري المتصفح

تتضمن المتصفحات الحديثة قدرات تنسيق JSON:

  • يقوم Chrome وEdge DevTools بتنسيق استجابات JSON تلقائيًا في علامة التبويب الشبكة
  • يوفر عارض JSON في Firefox عرض شجري تفاعلي
  • يمكن أن تقوم إضافات المتصفح مثل JSONView بتنسيق JSON مباشرة في المتصفح

محررات الكود وIDE

تقدم معظم بيئات التطوير أدوات تنسيق JSON:

  • يحتوي Visual Studio Code على تنسيق JSON مدمج (Alt+Shift+F)
  • تتضمن IDEs من JetBrains (WebStorm، IntelliJ) أدوات JSON قوية
  • تدعم Sublime Text وAtom تنسيق JSON من خلال الإضافات

أدوات سطر الأوامر

للمستخدمين في الطرفية أو الأتمتة:

  • jq هو معالج JSON قوي من سطر الأوامر
  • json_pp يأتي مثبتًا مسبقًا على العديد من أنظمة Unix
  • يوفر python -m json.tool تنسيقًا سريعًا باستخدام Python

الأساليب البرمجية

عند تنسيق JSON داخل التطبيقات:

// تنسيق JSON في جافا سكريبت
const formatted = JSON.stringify(jsonObject, null, 2);
# تنسيق JSON في بايثون
import json
formatted = json.dumps(json_object, indent=2)
// تنسيق JSON في جافا مع Gson
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String formatted = gson.toJson(jsonObject);
# تنسيق JSON في روبي
require 'json'
formatted = JSON.pretty_generate(json_object)
// تنسيق JSON في PHP
$formatted = json_encode($jsonObject, JSON_PRETTY_PRINT);

التاريخ

تم إنشاء JSON بواسطة دوغلاس كروكفورد في أوائل العقد الأول من القرن الحادي والعشرين كبديل خفيف لـ XML. تم اشتقاق التنسيق من بناء جملة كائن JavaScript ولكن تم تصميمه ليكون مستقلًا عن اللغة. في عام 2006، تم تحديد JSON رسميًا في RFC 4627، وسرعان ما اكتسبت شعبيته بسبب بساطته وتوافقه مع JavaScript.

قبل JSON، كان XML هو التنسيق السائد لتبادل البيانات، ولكن كان verbosity والتعقيد الخاص به يجعلانه غير مريح للعديد من التطبيقات. قدمت JSON بناء جملة أكثر اختصارًا كان أسهل في القراءة والكتابة، لكل من البشر والآلات. كما أنها كانت تتماشى تمامًا مع نموذج كائنات JavaScript، مما جعلها الخيار الطبيعي لتطبيقات الويب.

تسارعت اعتماد JSON مع ظهور AJAX وواجهات برمجة التطبيقات RESTful في منتصف العقد الأول من القرن الحادي والعشرين. بحلول العقد الثاني من القرن الحادي والعشرين، أصبحت المعيار الفعلي لواجهات برمجة التطبيقات على الويب، وملفات التكوين، وتخزين البيانات في قواعد البيانات NoSQL مثل MongoDB وCouchDB.

اليوم، يتم دعم JSON من قبل تقريبًا كل لغة برمجة وتستخدم في عدد لا يحصى من التطبيقات عبر الويب. لقد جعلت بساطتها ومرونتها والدعم العالمي لها واحدة من أهم تنسيقات البيانات في الحوسبة الحديثة.

أمثلة على الكود

إليك أمثلة حول كيفية تنسيق JSON في لغات برمجة مختلفة:

// تنسيق JSON في جافا سكريبت
function formatJSON(jsonString) {
  try {
    const parsedData = JSON.parse(jsonString);
    return JSON.stringify(parsedData, null, 2);
  } catch (error) {
    return `خطأ: ${error.message}`;
  }
}

// مثال للاستخدام
const rawJSON = '{"name":"جون","age":30,"city":"نيويورك"}';
console.log(formatJSON(rawJSON));
# تنسيق JSON في بايثون
import json

def format_json(json_string):
    try:
        parsed_data = json.loads(json_string)
        return json.dumps(parsed_data, indent=2)
    except json.JSONDecodeError as e:
        return f"خطأ: {str(e)}"

# مثال للاستخدام
raw_json = '{"name":"جون","age":30,"city":"نيويورك"}'
print(format_json(raw_json))
// تنسيق JSON في جافا مع Gson
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;

public class JSONFormatter {
    public static String formatJSON(String jsonString) {
        try {
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            Object parsedJson = gson.fromJson(jsonString, Object.class);
            return gson.toJson(parsedJson);
        } catch (JsonSyntaxException e) {
            return "خطأ: " + e.getMessage();
        }
    }
    
    public static void main(String[] args) {
        String rawJSON = "{\"name\":\"جون\",\"age\":30,\"city\":\"نيويورك\"}";
        System.out.println(formatJSON(rawJSON));
    }
}
// تنسيق JSON في PHP
function formatJSON($jsonString) {
    $result = json_decode($jsonString);
    if (json_last_error() !== JSON_ERROR_NONE) {
        return "خطأ: " . json_last_error_msg();
    }
    return json_encode($result, JSON_PRETTY_PRINT);
}

// مثال للاستخدام
$rawJSON = '{"name":"جون","age":30,"city":"نيويورك"}';
echo formatJSON($rawJSON);
# تنسيق JSON في روبي
require 'json'

def format_json(json_string)
  begin
    parsed_data = JSON.parse(json_string)
    return JSON.pretty_generate(parsed_data)
  rescue JSON::ParserError => e
    return "خطأ: #{e.message}"
  end
end

# مثال للاستخدام
raw_json = '{"name":"جون","age":30,"city":"نيويورك"}'
puts format_json(raw_json)
// تنسيق JSON في C# مع Newtonsoft.Json
using Newtonsoft.Json;
using System;

class JSONFormatter
{
    public static string FormatJSON(string jsonString)
    {
        try
        {
            object parsedJson = JsonConvert.DeserializeObject(jsonString);
            return JsonConvert.SerializeObject(parsedJson, Formatting.Indented);
        }
        catch (JsonException e)
        {
            return $"خطأ: {e.Message}";
        }
    }
    
    static void Main()
    {
        string rawJSON = "{\"name\":\"جون\",\"age\":30,\"city\":\"نيويورك\"}";
        Console.WriteLine(FormatJSON(rawJSON));
    }
}
// تنسيق JSON في Go
package main

import (
    "encoding/json"
    "fmt"
)

func formatJSON(jsonString string) string {
    var parsedData interface{}
    err := json.Unmarshal([]byte(jsonString), &parsedData)
    if err != nil {
        return fmt.Sprintf("خطأ: %s", err.Error())
    }
    
    formattedBytes, err := json.MarshalIndent(parsedData, "", "  ")
    if err != nil {
        return fmt.Sprintf("خطأ: %s", err.Error())
    }
    
    return string(formattedBytes)
}

func main() {
    rawJSON := `{"name":"جون","age":30,"city":"نيويورك"}`
    fmt.Println(formatJSON(rawJSON))
}

حالات خاصة واعتبارات

عند العمل مع تنسيق JSON، كن على دراية بهذه التحديات المحتملة:

ملفات JSON الكبيرة

يمكن أن تسبب ملفات JSON الكبيرة جدًا (عدة ميغابايت أو أكثر) مشاكل في الأداء في أدوات التنسيق المستندة إلى المتصفح. في مثل هذه الحالات:

  • ضع في اعتبارك استخدام أدوات سطر الأوامر مثل jq
  • قسم JSON إلى قطع أصغر
  • استخدم المحللات المتدفقة للمعالجة دون تحميل الملف بالكامل في الذاكرة

الهياكل المتداخلة بعمق

يمكن أن تصبح JSON المتداخلة بشكل مفرط (أكثر من 10-20 مستوى عميقًا) صعبة التنقل حتى عند تنسيقها. في هذه الحالات:

  • ضع في اعتبارك تسطيح الهيكل إذا كان ذلك ممكنًا
  • استخدم عارضات JSON القابلة للطي
  • استخرج وعمل مع أقسام محددة من JSON

الأحرف الخاصة والرموز

تدعم JSON Unicode، ولكن قد تواجه بعض أدوات التنسيق مشاكل مع بعض الأحرف:

  • تأكد من أن أداة التنسيق الخاصة بك تتعامل بشكل صحيح مع الرموز التعبيرية وغيرها من الأحرف Unicode
  • كن حذرًا مع الأحرف التحكمية وتسلسلات الهروب
  • تحقق من أن الناتج المنسق يحتفظ بجميع الأحرف الأصلية

دقة الأرقام

لا تحدد JSON الدقة للأرقام، مما قد يؤدي إلى مشاكل مع الأعداد الكبيرة جدًا أو القيم العشرية:

  • كن على دراية بأن بعض تطبيقات JavaScript قد تفقد الدقة للأعداد الصحيحة التي تتجاوز 53 بتًا
  • ضع في اعتبارك استخدام تمثيلات السلاسل للقيم الرقمية الدقيقة
  • اختبر مع القيم المتطرفة إذا كانت تطبيقك يتطلب دقة عالية

الكائنات والمصفوفات الفارغة

تتضمن JSON الصالحة الكائنات الفارغة {} والمصفوفات []، والتي يجب تنسيقها بشكل صحيح:

  • يجب أن تظهر الكائنات الفارغة كـ {}
  • يجب أن تظهر المصفوفات الفارغة كـ []
  • يجب أن تحافظ الهياكل الفارغة المتداخلة على المسافات البادئة المناسبة

المراجع

  1. JSON.org - الموقع الرسمي لمواصفات JSON
  2. RFC 8259 - تنسيق تبادل بيانات JSON
  3. MDN Web Docs: JSON - توثيق شامل حول JSON في JavaScript
  4. JSON Lint - أداة شائعة للتحقق من صحة JSON عبر الإنترنت
  5. jq - معالج JSON خفيف ومرن من سطر الأوامر
Feedback