- دوكإكس (تنسيق مايكروسوفت وورد)؛
- pdf (تنسيق أدوبي)؛
- mobi (يشيع استخدامه في أجهزة Amazon Kindle)؛
- وأكثر من ذلك بكثير (ePub، djvu، fb2...).
JSON
جافا سكريبت تدوين كائن. أنت بالفعل على دراية به قليلاً! لقد تحدثنا عنها في هذه المحاضرة ، ونظرنا إلى التسلسل في JSON هنا . حصلت على اسمها لسبب ما. تبدو كائنات Java المحولة إلى JSON تمامًا مثل كائنات JavaScript. لا تحتاج إلى معرفة JavaScript لفهم معنى كائننا:{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
}
ليس من الضروري تمرير كائن واحد. يمكن أن يحتوي JSON أيضًا على مجموعة من الكائنات:
[
{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
},
{
"title": "Бесы",
"author": "Федор Достоевский",
"year": 1872
},
{
"title": "Чайка",
"author": "Антон Чехов",
"year": 1896
}
]
نظرًا لأن JSON عبارة عن كائن JavaScript، فهو يدعم تنسيقات بيانات JavaScript التالية:
- سلاسل؛
- أرقام (عدد)؛
- كائنات (كائن) ؛
- صفائف (صفيف) ؛
- القيم المنطقية (الصواب والخطأ)؛
- باطل.
-
تنسيق يمكن قراءته بواسطة الإنسان. هذه ميزة واضحة إذا كان المستخدم النهائي الخاص بك إنسانًا. على سبيل المثال، يقوم الخادم الخاص بك بتخزين قاعدة بيانات تحتوي على جداول الرحلات. يطلب العميل البشري البيانات من قاعدة البيانات هذه باستخدام تطبيق ويب أثناء جلوسه في المنزل أمام الكمبيوتر. نظرًا لأنك تحتاج إلى تقديم البيانات بتنسيق يمكنه فهمه، فإن JSON يعد حلاً رائعًا.
-
بساطة. يمكنك القول أنها أولية :) أعلاه قدمنا مثالاً لملفين JSON. وحتى لو لم تسمع أبدًا عن وجود JavaScript (ناهيك عن كائناتها)، يمكنك بسهولة فهم نوع الكائنات الموصوفة هناك.
وثائق JSON بأكملها عبارة عن صفحة ويب واحدة تحتوي على صورتين. -
واسع الانتشار. جافا سكريبت هي لغة الواجهة الأمامية المهيمنة، وهي التي تملي شروطها. استخدام JSON أمر لا بد منه. لذلك، يستخدم عدد كبير من خدمات الويب JSON كتنسيق لتبادل البيانات. يدعم كل IDE حديث تنسيق JSON (بما في ذلك Intellij IDEA). تمت كتابة مجموعة من المكتبات للعمل مع JSON لجميع لغات البرمجة الممكنة.
يامل
في بداية وجودها، كانت تمثل لغة ترميزية أخرى - "لغة ترميزية أخرى". في ذلك الوقت تم وضعه كمنافس لـ XML. الآن، بعد مرور الوقت، أصبحت تعني "YAML Ain't Markup Language" ("YAML ليست لغة ترميزية"). ماذا يحب؟ لنتخيل أننا بحاجة إلى إنشاء 3 فئات من الشخصيات للعبة الكمبيوتر الخاصة بنا: المحارب، والساحر، واللص. سيكون لديهم الخصائص التالية: القوة وخفة الحركة والتحمل ومجموعة من الأسلحة. هذا هو الشكل الذي سيبدو عليه ملف YAML الخاص بنا مع أوصاف الفصل:classes:
class-1:
title: Warrior
power: 8
agility: 4
stamina: 7
weapons:
- sword
- spear
class-2:
title: Mage
power: 5
agility: 7
stamina: 5
weapons:
- magic staff
class-3:
title: Thief
power: 6
agility: 6
stamina: 5
weapons:
- dagger
- poison
يحتوي ملف YAML على بنية شجرة: بعض العناصر متداخلة مع عناصر أخرى. يمكننا التحكم في التداخل باستخدام عدد معين من المسافات للإشارة إلى كل مستوى. ما هي المزايا التي يتمتع بها تنسيق YAML؟
-
انسان قارئ. مرة أخرى، حتى إذا رأيت ملف yaml بدون وصف، فيمكنك بسهولة فهم الكائنات الموصوفة هناك. YAML هو مدى سهولة قراءة الإنسان بحيث تكون الصفحة الرئيسية لـ yaml.org عبارة عن ملف yaml عادي :)
-
الاكتناز. تتكون بنية الملف من مسافات: ليست هناك حاجة لاستخدام الأقواس أو علامات الاقتباس.
-
دعم هياكل البيانات الأصلية للغات البرمجة. الميزة الكبيرة لـ YAML مقارنة بـ JSON والعديد من التنسيقات الأخرى هي أنها تدعم هياكل بيانات مختلفة. فيما بينها:
-
!!map
مجموعة غير مرتبة من أزواج المفاتيح: القيمة مع عدم وجود إمكانية للتكرارات؛ -
!!omap
تسلسل مرتب لأزواج المفاتيح: القيمة مع عدم وجود احتمال للتكرار؛ -
!!أزواج:
تسلسل مرتب لأزواج المفاتيح: القيمة مع إمكانية التكرارات؛ - !!set
تسلسل غير مرتب من القيم التي لا تساوي بعضها البعض؛ - !!seq
تسلسل القيم التعسفية؛
بعض هذه الهياكل ستكون مألوفة لك من Java! :) بفضل هذه الميزة، يمكنك إجراء تسلسل لهياكل البيانات المختلفة من لغات البرمجة إلى تنسيق YAML.
-
-
القدرة على استخدام المرساة والاسم المستعار
ترجمة الكلمات "مرساة" و "اسم مستعار" - "مرساة" و "اسم مستعار". من حيث المبدأ، فإنه يصف بدقة جوهر هذه المصطلحات في YAML.
إنها تسمح لك بتحديد عنصر في ملف yaml، والإشارة إليه في بقية الملف في حالة تكراره. يتم إنشاء المرساة باستخدام الرمز
&
ويتم إنشاء الاسم المستعار باستخدام*
.لنفترض أن لدينا ملفًا يحتوي على أوصاف لكتب ليو تولستوي. لتجنب كتابة اسم المؤلف يدويًا في كل مرة، سنقوم ببساطة بإنشاء رابط "leo" والإشارة إليه باستخدام اسم مستعار عندما نحتاج إليه:
books: book-1: title: War and Peace author: &leo Leo Tolstoy year: 1869 book-2: title: Anna Karenina author: *leo year: 1873 book-3: title: Family Happiness author: *leo year: 1859
عندما نقرأ هذا الملف باستخدام أحد المحللين اللغويين، سيتم استبدال القيمة "Leo Tolstoy" في الأماكن الصحيحة بدلاً من الاسم المستعار الخاص بنا.
- يمكنك تضمين البيانات بتنسيقات أخرى في YAML. على سبيل المثال، جسون:
books: [ { "title": "War and Peace", "author": "Leo Tolstoy", "year": 1869 }, { "title": "Anna Karenina", "author": "Leo Tolstoy", "year": 1873 }, { "title": "Family Happiness", "author": "Leo Tolstoy", "year": 1859 } ]
تنسيقات التسلسل الأخرى
XML
يعتمد هذا التنسيق على ما يسمى بشجرة العلامات.<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
يتكون كل عنصر من علامة فتح وإغلاق (<> و </>). يمكن أن يحتوي كل عنصر على عناصر متداخلة. XML هو تنسيق شائع، وليس أقل شأنا من JSON وYAML (إذا تحدثنا عن الاستخدام في المشاريع الحقيقية). لدينا محاضرة منفصلة عن XML .
BSON (JSON الثنائي)
كما يوحي اسمها، فهي تشبه إلى حد كبير JSON، ولكنها غير قابلة للقراءة من قبل الإنسان وتعمل على البيانات بتنسيق ثنائي. وهذا يجعلها ملائمة جدًا لتخزين ونقل الصور والمرفقات الأخرى. بالإضافة إلى ذلك، يدعم BSON بعض أنواع البيانات غير المتوفرة في JSON. على سبيل المثال، يمكنك كتابة تاريخ (بتنسيق مللي ثانية) أو حتى جزء من كود JavaScript في ملف BSON. تقوم قاعدة بيانات NoSQL الشهيرة MongoDB بتخزين المعلومات بتنسيق BSON.البروتوكول القائم على الموقف
في بعض المواقف، نحتاج إلى تقليل كمية البيانات المنقولة بشكل كبير (على سبيل المثال، إذا كان هناك الكثير من البيانات ونحتاج إلى تقليل الحمل). في هذه الحالة، يمكننا استخدام البروتوكول القائم على الموضع ، أي تمرير قيم المعلمات دون أسماء المعلمات نفسها."Leo Tolstoy" | "Anna Karenina" | 1873
تشغل البيانات بهذا التنسيق مساحة أقل بكثير من ملف JSON الكامل. بالطبع، هناك تنسيقات تسلسلية أخرى، لكنك لست بحاجة إلى معرفتها جميعًا الآن :) من الجيد أن تكون على دراية بالتنسيقات التي أصبحت الآن معيار الصناعة لتطوير التطبيقات، وتذكر مزاياها واختلافاتها عن بعضها البعض . وقد انتهت محاضرتنا :) لا تنس حل بعض المشاكل اليوم! نراكم مرة أخرى! :)
GO TO FULL VERSION