تنسيق جيسون

تنسيق جيسون

تنسيق جيسون

JSON وهو عبارة عن تنسيق لتبادل البيانات قائم على النص، مما يعني أنه من السهل قراءته للشخص وكذلك للبرنامج. اسمها يتوافق مع الاختصار الإنجليزي لـ جافا سكريبت تدوين كائن ويتم توحيدها ك ECMA-404. على الرغم من أنه تنسيق قريب جدًا من حيث بناء الجملة جافا سكريبتنظرًا لأنه من السهل جدًا معالجة تشفير بيانات الكائن أو الحصول عليها، فهو يستخدم أيضًا في العديد من لغات البرمجة الأخرى (C, C + +, جافا, بايثون...) كبديل، على سبيل المثال، لـ XML، الذي له هدف مماثل، ولكن لأنه يتضمن المزيد من المعلومات الوصفية، فإنه يتطلب المزيد من النص وبالتالي يأخذ مساحة أكبر، ويستهلك المزيد من النطاق الترددي ويتطلب المزيد من الموارد للتشفير وفك التشفير المعلومات التي تحتوي عليها. JSON.

جدول المحتويات

    بيانات الكائن المشفرة في JSON وهي محاطة بأقواس، ويتم فصل الخصائص المختلفة المضمنة بداخلها بفواصل، وتسبق أسماء الخصائص القيمة، ويتم الفصل بينها بنقطتين.

    مخطط تفصيلي لبناء جملة كائن بتنسيق JSON

    يجب أن تكون أسماء الخصائص محاطة بعلامات اقتباس باستخدام علامات الاقتباس المزدوجة (على الرغم من أن بعض المحللين سيدعمون علامات الاقتباس المفردة)، وعلى الرغم من السماح ببعض الأحرف الخاصة للأسماء (مثل علامات التشكيل)، إلا أنه لا يوصى بتجنب معايير بعض محركات التحليل و تجنب التعارضات عند استخدام الخاصية خاصة مع بناء جملة النقطة (object.property).

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

    كما هو الحال مع اللغة جافا سكريبت (JSON هي مجموعة فرعية من جافا سكريبت) للتعبير عن مصفوفة، يتم وضع قيمها بين قوسين مربعين ومفصولة بفواصل. أبسط حالة موضحة في المثال أدناه؛ إنها مصفوفة أحادية البعد، متجهة، مكونة من قيم عددية.

    En جافا سكريبت ليس من الضروري أن تكون جميع عناصر المصفوفة من نفس النوع، يمكنك المزج، على سبيل المثال، بين السلاسل النصية والقيم الرقمية. يمكن أيضًا أن يكون المتجه، وهو مصفوفة أحادية البعد، أحد عناصر مصفوفة أخرى، مما يسمح ببناء مصفوفات متعددة الأبعاد ذات أطوال متغيرة. يوضح المثال التالي كائنًا له ثلاث خصائص: الأول مصفوفة ثنائية الأبعاد ذات أطوال ثابتة، والثانية أطوال متغيرة، والثالثة مكونة من مصفوفة ذات قيم من أنواع مختلفة.

    يستخدم المثال التالي كائنات أخرى كقيم لخصائص الكائن الأصلي. لا يوجد حد لمستوى التداخل، وبالتالي فإن الكائنات التي تمثل قيم خاصية للأصل يمكن أن تحتوي أيضًا على كائنات أخرى كقيم خصائص خاصة بها وما إلى ذلك.

    تماما كما يحدث مع جافا سكريبت، تُستخدم رموز الهروب لتضمين أحرف معينة داخل سلسلة نصية. الطريقة الأكثر عمومية هي استخدام رموز Unicode المعبر عنها بشريط الهروب والحرف u وأربعة أرقام سداسية عشرية بالتنسيق "\u263A" للإشارة إلى ☺ على سبيل المثال.

    فيما يلي الأحرف القياسية الموجودة في معظم اللغات (المشابهة لـ C).

    • تراجع \b رمز ASCII شنومكس (شنومكسنومك)
    • جدولة \t رمز ASCII 9 (0x09) يتم تمثيله عادةً على أنه HT (جدولة أفقية)
    • خط جديد \n رمز ASCII 10 (0x0A) يتم تمثيله عادةً على أنه LF (تغذية الخط)
    • صفحة جديدة \f رمز ASCII 12 (0x0C) يتم تمثيله عادةً كـ FF (تغذية النموذج)
    • عودة \r رمز ASCII 13 (0x0D) يتم تمثيله عادةً كـ CR (سطر الإرجاع)
    • علامات الاقتباس \" رمز ASCII شنومكس (شنومكسنومك)
    • شريط الانقسام \/ رمز ASCII 57 (0x2F)
    • بارا العاكس \\ رمز ASCII 134 (0x5ج)
    • رمز يونيكود \uXXXX

    مستمدة من C (و ما يتعلق بها يونكس ونحو ذلك مثل جنو / لينكس) عادة ما يتم تمثيل نهاية السطر بـ \n وهو الذي يجب الاختيار فيه JSON ولكن من المثير للاهتمام أن نتذكر أن بعض أنظمة التشغيل تفضل البدائل الأخرى. يمثل Windows عادة مع \r\n نهايات الأسطر ونظام التشغيل Mac OS (قبل OS \r

    وفيما يتعلق بالتنسيق العددي، فإن المرجع هو أيضا جافا سكريبت. الفاصل العشري هو الفترة، الشرطة (ASCII 45 0x2D) كعلامة سلبية و التدوين في شكل الأسي (الترميز العلمي) الاستخدامات E كمؤشر (والذي يمكن أن يكون بأحرف كبيرة أو صغيرة)

    كما قلت في البداية، لاستخدام البيانات التي سيتم الحصول عليها كنص، فإن لغات البرمجة المختلفة لها وظائف التحليل والتخصيص. يوضح المثال التالي كيف سيتم استخدامها في جافا سكريبت. لتتمكن من استخدامها من وحدة التحكم، يتم تضمين تعيين البيانات JSON لتجنب الأخطاء المحتملة حسب معيار ECMA الذي يستخدمه المترجم جافا سكريبت يتم تعيين الكائن JSON في سطر واحد. العدد 6 لسنة 2016 (ECMA-262) يدعم سلاسل متعددة الأسطر، الإصدار 5 (حتى 2011) يحتاج إلى إضافة رمز الهروب \ وفي السابق عليك حلها يدويًا أو باستخدام سطر واحد.

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

    يمكن تحويل هذا الكائن إلى نص، على سبيل المثال، باستخدام الوظيفة stringify على النحو التالي:

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

    أما المشكلة الثانية فتنشأ عند التعامل مع البيانات الثنائية البحتة (الصور مثلا)، فعند التعامل مع أجزاء صغيرة يمكن حلها بما تم شرحه لحل تنسيق الأحرف الخاصة، أما إذا كان الأمر يتعلق بتشفير معلومات ذات أبعاد معينة، سيكون من الضروري تضمينه ضمن التنسيق JSON باستخدام تنسيق نص آخر. الترميز الأكثر استخدامًا لحل هذا الجانب هو Base64 حيث أن العديد من اللغات بها مكتبات لتحويل المعلومات في اتجاه أو آخر. إذا كانت البيانات التي يتم معالجتها هي في الغالب من هذا النوع و/أو ليس من الضروري أن يقوم الشخص بتفسير المعلومات بدون برنامج، فمن المفيد النظر في ما إذا كان التنسيق JSON هو الأنسب.

    أكتب تعليق

    ربما تكون قد فاتتك